[Python] canali per rivendere un biglietto per EuroPython?

2017-06-28 Per discussione Alberto Granzotto
Ciao,
un mio collega aveva comprato un biglietto per EuroPython a 270€, e
purtroppo non può più andarci.

Dove gli consigliate di postare per rivenderlo? Già fatti: Twitter, pagina
Facebook EuroPython (penso stia aspettando risposta).

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


Re: [Python] OT: Imparare un altro linguaggio

2016-04-14 Per discussione Alberto Granzotto

On 04/14/2016 01:17 PM, Andrea D'Amore wrote:
> 2016-04-14 11:26 GMT+02:00 Matteo Perini :
>> Mi piace la programmazione e mi piacerebbe cominciare a conoscere anche un
>> altro linguaggio.
>> Non ho scopi particolari in mente
> 
> Probabilmente senza scopo immediato -ma d'altronde dici di non averne
> uno specifico- puoi provare Lisp, cerca il sito di Paul Graham o se
> vuoi una introduzione divertente e con qualche riferimento storico
> cerca "Land of LISP".


+1 per LISP! È un linguaggio affascinante, e ammetto che ti apre
abbastanza il cervello. Molte cose che diamo per scontate nei linguaggi
moderni (garbage collection, ad esempio) sono state create per LISP[1].

Trovo super interessante questo:
Lisp was the first language where the structure of program code is
represented faithfully and directly in a standard data structure—a
quality much later dubbed "homoiconicity". As a result, Lisp functions
can be manipulated, altered or even created within a Lisp program
without lower-level manipulations. This is generally considered one of
the primary advantages of the language with regard to its expressive
power, and makes the language suitable for syntactic macros and
metacircular evaluation.

ciao,
a.

[1]
https://en.wikipedia.org/wiki/Lisp_(programming_language)#Language_innovations




signature.asc
Description: OpenPGP digital signature
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Percorso di ricerca moduli.

2014-12-12 Per discussione Alberto Granzotto
2014-12-12 15:47 GMT+01:00 Manlio Perillo manlio.peri...@gmail.com:

 2014-12-12 14:52 GMT+01:00 Gabriele Battaglia iz4...@libero.it:

 Salve a tutti.

 Un domandone banale, per il quale ammetto candidamente di vergognarmi
 mostruosamente e faccio appello alla vostra infinita pazienza.

  [...]


 Allora ho provato a scrivere

 PYTHONPATH = [C:\\Dropbox\\py\\e4ec]


 Prova con sys.path.append(rC:\Dropbox\py\e4ec)
 Quello che hai scritto non fa nulla.



La soluzione corretta è quella di Manlio.
Giusto per chiarire, credo tu abbia confuso la variabile d'ambiente
PYTHONPATH (che imposti quindi PRIMA di far partire l'interprete python)
con una variabile generica Python.

Puoi impostare PYTHONPATH dal pannello di controllo
http://www.computerhope.com/issues/ch000549.htm di windows.
Da sistemi UNIX puoi fare:

vrde@pulp:~$ PYTHONPATH=*/home/vrde/test* python
Python 2.7.8
 import sys
 sys.path
['', '*/home/vrde/test*', '/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu', ... ]


Per me non è una *best practice* impostare il PYTHONPATH a mano oppure
modificare sys.path, ti consiglio quindi di utilizzare un *virtual env*, e
installare dentro il virtual env le dipendenze che servono al tuo progetto.
Alternativamente puoi creare una cartella nel tuo sistema dove metti tutte
le tue dipendenze python (chessò, C:\...\pythonmodules) che aggiungi in
modo permanente al PYTHONPATH dal pannello di controllo.

ciao,
Alberto

PS: non sono utente Windows
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] tablette [era: Psycopg2 e serializzazione delle SELECT in JSON]

2014-10-20 Per discussione Alberto Granzotto
Ciao,
a seguito della conversazione con Daniele, mi è venuta l'idea per un modulo
Python per convertire recordset tabellari in JSON.

Sebbene le indicazioni di Daniele fossero precise e utili, ho deciso
comunque di virare verso una soluzione lato applicativo. (Non l'ho ancora
integrata con psycopg2, ma dovrebbe accettare un qualsiasi iteratore.)

Il modulo l'ho creato molto velocemente, consideratelo un test pilota
aperto a critiche.
Lo trovate qui:
 - https://github.com/vrde/tablette

Ora provo a integrarlo con la mia applicazione e vedo che succede.

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


Re: [Python] Psycopg2 e serializzazione delle SELECT in JSON

2014-10-16 Per discussione Alberto Granzotto
Ciao Daniele, grazie per la esaustiva risposta, mi sembra tutto chiaro a
parte una cosa -

2014-10-16 15:47 GMT+02:00 Daniele Varrazzo p...@develer.com:

 On 2014-10-16 13:59, Alberto Granzotto wrote:
 [...]l as (id integer, email text);

 e riscrivi la tua query in maniera da resitiuire un array di questi tipi:
 test= select u.id, u.name, array_agg((e.id, e.email)::t_email) from
 users u join emails e on u.id = e.user_id group by 1,2;


C'è modo di evitare il group by? O devo prima estrarmi tutti gli id delle
email associate allo specifico user e poi usarle nel group by? Cosa succede
se invece di estrarre un solo user volessi estrarre N user?

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


Re: [Python] Psycopg2 e serializzazione delle SELECT in JSON

2014-10-16 Per discussione Alberto Granzotto
Chiedo venia, avrei potuto risparmiarti una mail, non avevo capito il
funzionamento del GROUP BY nella query, ci sono arrivato dopo che GROUP BY
1, 2 è equivalente a GROUP BY u.id, u.name :)

Grazie per tutte le indicazioni, ora che mi hai mostrato che a) si può fare
b) come si fa ho tutte le informazioni necessarie per divertirmi!

Alberto

2014-10-16 16:32 GMT+02:00 Daniele Varrazzo p...@develer.com:

 On 2014-10-16 15:08, Alberto Granzotto wrote:

 Ciao Daniele, grazie per la esaustiva risposta, mi sembra tutto chiaro a
 parte una cosa -

 2014-10-16 15:47 GMT+02:00 Daniele Varrazzo p...@develer.com:

  On 2014-10-16 13:59, Alberto Granzotto wrote:
 [...]l as (id integer, email text);

 e riscrivi la tua query in maniera da resitiuire un array di questi tipi:
 test= select u.id, u.name, array_agg((e.id, e.email)::t_email) from
 users u join emails e on u.id = e.user_id group by 1,2;


 C'è modo di evitare il group by? O devo prima estrarmi tutti gli id delle
 email associate allo specifico user e poi usarle nel group by? Cosa
 succede
 se invece di estrarre un solo user volessi estrarre N user?


 Il group by e' necessario per usare array_agg: se non lo usi hai i dati di
 ogni utente ripetuti se un utente ha piu' di una email (come nella tua
 query originale). Puoi usare una sottoquery che crea una mappa id_utente -
 array di t_email e fare il join di questa con gli utenti, ma un group by
 (sebbene piu' efficiente) ci vuole sempre, es. nella sottoquery.

 In linea generale, psycopg ti restituira' un oggetto per ogni record che
 Postgres genera: i gradi di liberta' sono nel record generato da postgres
 (quindi e.g. usare group by, creare array, strutture, dizionari, ecc.
 usando i tipi di postgres in maniera un po' piu' avanzata) e nel
 configurare il mapping tra i record letti e gli oggetti python creati da
 psycopg (giocando con i typecaster). Se esci da questo framework (un record
 - un oggetto) allora devi fare qualcosa a valle di psycopg, quindi ti
 ritrovi con i tipi di algoritmi ripetitivi per cui hai scritto la mail in
 primo momento: iterare sugli utenti, controllare se li avevi gia' letti,
 metterli in un dict con una lista di email vuote, aggiungere una email...

 Quindi, detto questo, come mai vuoi evitare il group by? Ti aspetti di
 leggere i dati da postgres in una maniera che non ho capito (nel qual caso
 fammi un esempio) oppure ti aspetti un comportamento di psycopg che esula
 dal restitiure un oggetto per ogni record?

 Estrarre N utenti si fa esattamente come sopra: la query restituisce un
 record per utente, ognuno con la lista delle sue email, e puoi iterare sul
 cursore in tutti i modi che psycopg offre (fetchmany(), fetchall(), for
 record in cur:...)

 test= insert into users (name) values ('daniele');
 INSERT 0 1
 test= insert into emails (user_id, email) values (2, 'piro@officine
 ');
 INSERT 0 1
 test= insert into emails (user_id, email) values (2, 'piro@develer');
 INSERT 0 1

 In [20]: dcur.execute(select u.id, u.name, array_agg((e.id,
 e.email)::t_email) as emails from users u join emails e on u.id =
 e.user_id group by 1,2)

 In [21]: dcur.fetchall()
 Out[21]:
 [{'emails': [
 {'email': 'albe...@example.org', 'id': 1},
 {'email': 'albe...@lemonparty.org', 'id': 2}],
   'id': 1,
   'name': 'alberto'},
  {'emails': [
 {'email': 'piro@officine', 'id': 4},
 {'email': 'piro@develer', 'id': 5}],
   'id': 2,
   'name': 'daniele'}]



 -- Daniele
 ___
 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] Come pubblico il mio progetto django?

2014-04-06 Per discussione Alberto Granzotto
Apache + modwsgi = morte e distruzione

Avevo fatto dei deploy con questa combo, ma ora per gli ultimi deploy mi
sono trovato mille volte meglio con Nginx+Gunicorn e un proxy.

Leggiti questo:
 -
http://michal.karzynski.pl/blog/2013/06/09/django-nginx-gunicorn-virtualenv-supervisor/

ciao,
a.


2014-04-06 9:54 GMT+02:00 Gollum1 gollum1.smeag...@gmail.com:

 Il 06 aprile 2014 09:41, Valerio Maggio valerio.mag...@gmail.com ha
 scritto:
 
 
  On 05/apr/2014, at 21:46, Gollum1 wrote:
  come ho trovato anche un
  altro modulo, che ora non ricordo più...
 
  mod_wsgi? :)

 sì, credo che fosse proprio quello...

  ho anche trovato in alcuni post che pare ci sia una certa difficoltà
  ad avere contemporaneamente sullo stesso server apache la gestione di
  pagine php e pagine django/python, vi risulta?
 
  sul web si trova davvero di tutto -_- Non esiste alcun problema del
 genere, non scherziamo...
 

 però in questi post si parlava sempre del modulo mod-python, sembra
 che sia questo che da la maggior parte dei problemi.

  mi date qualche link più preciso da studiarmi
 
  https://docs.djangoproject.com/en/1.6/howto/deployment/wsgi/modwsgi/
 
 ottimo... grazie, gli do un occhio (stavo girando da un po' dentro la
 documentazione su djangoproject, questo non lo avevo visto)...

 mi viene un ulteriore dubbio...

 modwsgi, esegue qualsiasi script python, o viene trattato come uno script
 cgi?
 Non sono mai riuscito a capire pienamente questo concetto (è vero, non
 mi ci sono mai impegnato seriamente, continuavo a rimandare il tempo
 della messa online)...

 su aruba per esempio mi hanno risposto che python lo posso usare solo
 come script cgi (in pratica come gli script perl), ma qualsiasi script
 python, con il caricamento del relativo modulo, può essere caricato
 come cgi?), quindi non ci ho mai fatto troppo affidamento, visto che
 per ora pubblicherò il mio script python/django su un server privato
 all'interno di una intranet, non ho quindi bisogno di un service
 esterno...

 ma prima o poi comincerò ad interessarmi alla cosa in modo più
 articolato... grazie delle info...


 Byez
 --
 Gollum1
 Tesoro, dov'é il mio teoro...
 ___
 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] Usare VIM come ide

2014-02-18 Per discussione Alberto Granzotto
Avevo raccolto questa serie di link:
 * https://devcharm.com/pages/18-vim-is-your-new-ide

dacci un occhio :)


2014-02-19 0:02 GMT+01:00 Gollum1 gollum1.smeag...@gmail.com:

 Il 18 febbraio 2014 21:03, vincent vinc...@autistici.org ha scritto:
  tipo usando accrocchi come questo?
 
  http://vim.spf13.com/#vimrc
 
  raccoglie un po tutti i plugin più importanti, magari per iniziare è
  comodo, visto che si installa facile. tipo:

 ho un piccolo problema:
 c-e ho sempre saputo che si riferisce alla sequenza ctrl+e,
 ma Leader-e a cosa si riferisce? il cosidetto tasto leader viene
 usato in parecchi punti, il dubbio è che sia il tasto delle opzioni,
 ma la sua pressione viene catturata dal DE (KDE nel mio caso), sarebbe
 quindi una sequenza utilizzabile solo su un terminale puro?


 Byez
 --
 Gollum1
 Tesoro, dov'é il mio teoro...
 ___
 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] import urllib, perché non aggiungere i submodules nel file __init__.py?

2014-01-27 Per discussione Alberto Granzotto
domanda molto interessante, anche io delle volte sono incerto su come
gestire queste cose.
Cosi', su due piedi, ti direi che `urllib` fa da 'raccoglitore' per altri
sottomoduli, `urllib` quindi non e' un modulo che utilizzi da solo, in
quanto si occupa di fare da 'namespace'.

Non ho avuto tempo di googlare, ma mi piacerebbe sentire da altri developer
qui le loro best practices.

ciao,
Alberto


2014-01-27 Pietro peter.z...@gmail.com

 Buongiorno a tutti,

 voglio utilizzare il modulo urllib presente nella standard library,
 sto utilizzando: python3.3.3
 (http://docs.python.org/3.3/library/urllib.html).

 ho notato che se importo la libreria con:

 In [1]: import urllib

 In [2]: urllib.request
 ---
 AttributeErrorTraceback (most recent call last)
 ipython-input-3-615cd424e6d8 in module()
  1 urllib.request

 AttributeError: 'module' object has no attribute 'request'

 In [3]: dir(urllib)
 Out[2]:
 ['__builtins__',
  '__cached__',
  '__doc__',
  '__file__',
  '__initializing__',
  '__loader__',
  '__name__',
  '__package__',
  '__path__',
  'parse']

 riesco ad importare il module request con:

 In [4]: from urllib import request

 o come riportato dalla documentazione
 (http://docs.python.org/3.3/library/urllib.request.html#examples) con:

 In [5]: import urllib.request

 La domanda è: non potrebbe aver senso modificare il file __init__.py
 presente in urllib per poter importare la libreria anche solo con un
 `import urllib`?
 Perché è stata fatta questa scelta?
 C'é qualcosa di sbaglio nell'importare la libreria semplicemente con:
 `import urllib`, se si cosa?

 Voi cosa ne pensate?

 Buona giornata

 Pietro
 ___
 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] Django + Postgres

2013-12-15 Per discussione Alberto Granzotto
2013/12/15 Marco Beri marcob...@gmail.com

   per un progetto sono tornato al caro vecchio SQL, dopo un bel po' di
 tempo su MongoDB.

 Posso chiederti come mai?


Per diversi motivi:

- Mongo e' figo e comodo, spesso c'e' un rapporto 1:1 tra i documenti nel
DB e le View. Quello che cerco di fare con mongo mediamente e' storare
documenti che posso prendere e renderizzare con pochissima manipolazione,
magari con qualche read in piu'. Ma mi sono anche accorto che questa
comodita' la paghi nel momento in cui devi fare query per generare nuovi
dati e informazioni. Non che non si possa fare, ma ad esempio aggregare i
dati con l'aggregation framework di MongoDB e' un ginepraio. Pensa che una
volta, preso dalla disperazione, ho migrato i dati da MongoDB a MariaDB con
uno script e c'ho dato di un delizioso SQL con varie GROUP BY etc.

 - la potenza espressiva di SQL e' difficile da raggiungere

 - prototipare qualcosa velocemente con un framework che conoscevamo (nel
nostro caso Django) e avere anche un pannello di amministrazione gratis,
aka `django.contrib.admin`. Rimanendo quindi nell'ambito del framework
abbiamo usato la naturale scelta di SQL

 - non ho mai usato Postgres in produzione (eh, ok, chi e' senza peccato
scagli `SELECT * FROM stones LIMIT 1`)

 - mi sembra un approccio piu' agile*


* Vi condivido un pensiero personale che non ho ancora studiato a fondo, ma
ve lo butto la' perche' mi piacerebbe ragionarci.
Si dice che MongoDB sia
agilehttp://www.mongodb.com/blog/post/why-mongodb-popular,
che non sei piu' schiavo di schemi. No. A me sembra che la vera agilita'
sia data dall'avere i dati nella terza forma normale. Hai tutti i tuoi
atomi di dati sparsi in giro, e joinando gli dai valore e li trasformi in
informazioni. Con SQL puoi generare le informazioni che vuoi all'interno
del tuo universo di tuple. E sono tante, sono il prodotto cartesiano di
tutte le tabelle (OK, considerando le JOIN ci sono dei vincoli da
rispettare, quindi sono meno del prodotto cartesiano). Secondo me la vera
cosa che rende schiavi e' l'avere dei dati semi-denormalizzati. Inoltre
usare SQL significa avere uno schema, che si puo'
stamparehttp://django-extensions.readthedocs.org/en/latest/graph_models.html,
e che migliora la collaborazione e la comunicazione all'interno del team.
In MongoDB e' tutto dentro il DB.

 Quanti di voi usano Django ma fanno lavorare anche a trigger e procedure
 di Postgres, ad esempio per aggiornare in modo trasparente alcuni campi
 aggregati (es. totali)?

 Quando serve io. E quando serve non puoi farne a meno.

  O preferite tenere tutto a livello applicativo per portabilita'?
 
  Domanda molto aperta, me ne rendo conto, ma sono curioso di raccogliere
 qualche caso d'uso per sapere come vi comportate voi.

 Come dice C8E la portabilità è un falso mito. Chi ha mai migrato un
 progetto tra due db diversi alzi la mano? E chi di questi pochi l'ha fatto
 senza problemi grazie ad un orm alzi un piede.
 Pochi piedi in giro, scommetto :-)


D'accordo.


 Guarda questo video: http://www.youtube.com/watch?v=C3bZbA4jaAg


Poi me lo guardo :)


 Purtroppo non trovo le slide col cellulare.


ma hai scritto tutto da cellulare? hardcore.


  Comunque ha mostrato un esempio di una query generata dall'orm di django
 che impegnava due minuti e la stessa query fatta a mano e mi pare inglobata
 in una stored procedure ci metteva 20 millisecondi.


Non sono mai stato un enorme fan degli ORM. Delle volte e' piu' facile fare
una query a mano con SQL che trovare la corretta combinazione di metodi
delle API dell'ORM. Mi vanno bene invece quando devo scrivere.


 Ecco, magari le mie stored procedure le metterei qui:
 https://docs.djangoproject.com/en/1.6/howto/initial-data/#providing-initial-sql-data

Grazie!


 Almeno sono pure versionate.

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


[Python] Django + Postgres

2013-12-14 Per discussione Alberto Granzotto
ciao ragazz*,
per un progetto sono tornato al caro vecchio SQL, dopo un bel po' di tempo
su MongoDB.

Quanti di voi usano Django ma fanno lavorare anche a *trigger* e
*procedure*di Postgres, ad esempio per aggiornare in modo trasparente
alcuni campi
aggregati (es. totali)?

O preferite tenere tutto a livello applicativo per portabilita'?

Domanda molto aperta, me ne rendo conto, ma sono curioso di raccogliere
qualche caso d'uso per sapere come vi comportate voi.

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


[Python] Moduli Python da non perdere

2013-11-15 Per discussione Alberto Granzotto
ciao ragazz*,
come alcuni di voi sanno, sono fondatore di Urlist http://urli.st/, un
servizio per la raccolta e condivisione di link.
In produzione abbiamo Python (Tornado) e GoLang, lato client Javascript
come se piovesse.

Stiamo prendendo alcuni contenuti di qualita' dalla piattaforma, e li
stiamo pubblicando sotto un'altra forma, piu' leggibile e fruibile.
http://tmp.devcharm.com/pages/triforce-your-javascript
Ieri sera ho creato questa pagina con alcuni dei moduli che IMO tutti i/le
pythonisti/e dovrebbero conoscere :)
 * http://tmp.devcharm.com/pages/python-modules-you-should-know

Ho anche aggiunto un progetto chiamato Structlog che ho conosciuto ieri
sera al Python meetup qui a Berlino. Molto interessante.

Voi avete qualche consiglio, qualcosa che manca ma che pensate sia
indispensabile?

grazie,
Alberto

PS: ci vediamo alla EuroPython a Berlino nel 2014? :)
PPS: devcharm.com e' powered by Tornado 3
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Moduli Python da non perdere

2013-11-15 Per discussione Alberto Granzotto
On Fri, Nov 15, 2013 at 8:32 PM, Giampaolo Rodola' g.rod...@gmail.comwrote:

 2013/11/15 Alberto Granzotto agran...@gmail.com
 
   Docopt. Forget optparse and argparse, and build beautiful,
  readable and (if you need) complex command-line interfaces using
  docstrings. IMO the best module created in 2013.


 Fantastico! Non lo conoscevo. Mi sa che mi riscrivo tutto con questo.



docopt spacca pesantemente :)

e passate tutti a PEW che funziona bene!
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Moduli Python da non perdere

2013-11-15 Per discussione Alberto Granzotto
2013/11/15 Marco Beri marcob...@gmail.com

 2013/11/15 Alberto Granzotto agran...@gmail.com

 Ieri sera ho creato questa pagina con alcuni dei moduli che IMO tutti
 i/le pythonisti/e dovrebbero conoscere :)
  * http://tmp.devcharm.com/pages/python-modules-you-should-know


 Bella lì!


si lavora duro :)


 Non conoscevo proprio PEW. Io vado di virtualevnwrapper. Tu lo hai mai
 usato? Cosa ha in più PEW?


Ha gia' risposto Dario, ma ti parlo da utente. Prima di PEW non usavo
wrapper di virtualenv. Usavo solo virtualenv e lanciavo a mano l'env dalla
shell, un po' per pigrizia un po' perche' non ne sentivo il bisogno.

Poi ho provato PEW e ho pensato: come cazzo ho fatto fino ad oggi?. Al
contrario di virtualenvwrapper, l'unico comando da shell e' `pew`, e se
voglio rinfrescarmi la memoria basta fare un `pew` e si descrive. Sembrera'
poco, ma non ho memoria, e avere un prefisso mi aiuta molto.

my 2 eurocents,
Alberto
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] self implicito

2012-10-06 Per discussione Alberto Granzotto
On Wed, Oct 3, 2012 at 10:52 AM, Nicola Larosa n...@teknico.net wrote:

 Walter Valenti wrote:
  Ho un metodo di una classe, che utilizza molti metodi di una classe
  padre, con la conseguenza che sono pieno di self.qualcosa.
  C'è un modo per rendere implicito il self?

 No, non c'è, per scelta progettuale.

  import this
 The Zen of Python, by Tim Peters

 Beautiful is better than ugly.
 Explicit is better than implicit.



Perché dichiarare esplicitamente `self` nella signature del metodo quando
puoi modificare il bytecode a runtime?

Prendi questo Tim Peters!
http://www.voidspace.org.uk/python/articles/metaclasses.shtml#the-selfless-metaclass
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Ciclo for e variabili passate per riferimento

2012-09-16 Per discussione Alberto Granzotto
2012/9/16 Lorenzo Sutton lorenzofsut...@gmail.com

 On 14/09/12 22:12, Francesco Maida wrote:

 Il giorno 13 settembre 2012 23:10, Daniele Zambelli
 daniele.zambe...@gmail.com 
 mailto:daniele.zambelli@**gmail.comdaniele.zambe...@gmail.com
 ha scritto:



 Altre due soluzioni:

   def russianizza(nome):
  return nome+'sky'


 Per la parità, non dovrebbe essere qualcosa come:

 def russianizza(nome):
 nomi_maschili_terminanti_in_a = ['Luca','Andrea','Barabba'] # etc.
 if (nome[-1:] == 'a') and (nome not in m nomi_maschili_terminanti_in_a)
 **:
 return nome[:-1] + 'ska'
 else:
 return nome + 'sky'

 (certo non funziona con nomi femminili tipo Chantal, Christal, Betty, etc.


giusto per essere picky:
if (nome.endswith('a') [...])

mi piacciono molto endswith e startswith

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


Re: [Python] PyCharm 2.6 + Flask, qualcuno l'ha provato ?

2012-09-04 Per discussione Alberto Granzotto
Ciao Francesco,

2012/9/4 Francesco Maida d...@cesco.it

 Probabilmente è colpa mia essendo un niubbo di Flask e un
 praticamente-niubbo di Python, ma c'è un modo per fare il debug di un
 progetto Flask senza bisogno di chiudere e riavviare il server ogni volta
 in cui si effettua una modifica al codice ?


già guardato questo link?
http://flask.pocoo.org/docs/quickstart/#debug-mode


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


Re: [Python] controllare risposta tcp/ip

2012-08-21 Per discussione Alberto Granzotto
2012/8/21 Matteo Perini perini.mat...@gmail.com

 Ciao a tutti,
 sapete dirmi come fare a controllare la risposta ottenuta durante una
 comunicazione client-server?


ciao Matteo


 Cerco di spiegare meglio il mio problema.
 ho del codice simile a questo:

 s = socket.socket(socket.AF_INET,**socket.SOCK_STREAM)
 s.connect((192.168.1.102,**5001))
 s.send('comando')
 resp = s.recv(1024)


 dove 1024 dovrebbe essere il numero di caratteri letti. giusto?


non sono espertissimo di socket, ma 1024 è il numero massimo di byte da
leggere e il tutto può essere anche molto frammentato.


 Quando invio il comando dovrei ottenere una risposta dal server e
 solitamente è così.
 Il problema è che la risposta resp che ottengo, in qualche caso, appare
 troncata.

 La risposta deve essere una struttura xml tipo questa:
 server
   var1TRUE/var1
   var2TRUE/var2
   var3FALSE/var3
   var4TRUE/var4
   var5FALSE/var5
   var655.5/var6
 /server

 Se la struttura non arriva completa non posso fare il parsing dell'xml.

 Come posso controllare che la struttura arrivi completa?
 Devo controllare le righe iniziale e finale?
 Devo svuotare in qualche modo il buffer prima di leggere (non dovrebbe
 essere pieno!)?
 Leggo troppi caratteri?


La mia personale opinione è che qui c'è un problema di astrazioni. A pelle
(ma non c'è alcuna dimostrazione matematica o che su questo) ti dico che mi
fa strano vedere che gestisci una comunicazione a bassissimo livello
(socket) per avere dell'XML. La gestione dei socket è semplice ma la
*comunicazione* rischia di essere complessa: devi crearti tu un protocollo
di comunicazione per decidere quando un messaggio è finito o no.

O fai un ciclo con dentro la recv, butti tutti i byte in un buffer e
termini quando trovi la fine del tag di riferimento, o utilizzi qualche
cosa più ad alto livello, magari mediato da un protocollo di comunicazione
tipo HTTP o XMLRPC (odio xmlrpc ma usato da python è bellissimo 
http://docs.python.org/library/xmlrpclib.html), ovviamente c'è l'overhead
del protocollo ma qualcosa devi pagare :)

Dai una occhiata anche alle netstring che magari aiutano 
http://en.wikipedia.org/wiki/Netstring

E comunque dipende sempre tutto da quello che devi fare, nel tuo caso forse
c'è bisogno di una comunicazione più da chat ovvero botta e risposta
(visto come usi i comandi), se vuoi stare comunque basso livello c'è il
bellissimissimo modulo `asynchat` che ti può venire in aiuto: definisci i
terminatori delle stringhe di comunicazione e asynchat fa il resto.

Ammetto che come risposta non è molto strutturata ma il caldo non aiuta :P

ciao,
Alberto


 E' un problema che si verifica solo ogni tanto e non riesco a trovarne una
 causa.
 Il server è windows il client monta linux.

 Grazie a chiunque mi indichi qualche possibile strategia per evitare
 questo fastidioso problema.
 Ciao
 Buon caldo
 Matteo
 __**_
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/**mailman/listinfo/pythonhttp://lists.python.it/mailman/listinfo/python

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


Re: [Python] controllo della data

2012-07-28 Per discussione Alberto Granzotto
2012/7/28 Daniele Varrazzo p...@develer.com

 On 2012-07-28 19:49, Giorgio Zoppi wrote:

 Marco compariamo

 RegExp:
 import re

 date = 01/02/1988
 checkdate =^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[-
 /.](19|20)\d\d
 obj = re.compile(checkdate)
 if (re.match(date)):
  print 'Valid date'


 Ti dice anche se un anno è bisestile?


  Datetime
 from datetime import datetime
 date = '10/12/1977'
 input = date.replace(/,)
 result = None
 format = ['%d%m%Y']
   try:
 result = datetime.strptime(input, format)
   except:
  pass

 if (result):
 print Validate


 Il secondo e' piu pythonico...ma lungo. Hai altre opzioni?


 Basta toglierci tutta la roba che non serve. Che poi che vuol dire, più un
 pezzo di codice è corto e meglio è? L'estetica del perl?

 from datetime import datetime
 input = '10/12/1977'
 try:
 result = datetime.strptime(input, '%d/%m/%Y')
 except ValueError:
 result = None

 (sebbene l'aggettivo Pythonico non sia esattamente ben definito, il tuo
 esempio *veramente* non lo era..)


totalmente d'accordo, e non sono nemmeno sostituibili. Semplicemente quella
con le RegExp è sbagliata, l'altra no, perché?

import re
re.match(
^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\d\d,
31/02/1988) # nota bene, il 31 febbraio probabilmente non esiste

In questo caso con la regexp puoi magari avvicinarti alla correttezza, puoi
farle estremamente sofisticate e riconoscere i mesi da 30/31/28 giorni e
arrivare a considerare gli anni bisestili ottenendo qualcosa tipo:

 
^(?:(?:(?:0?[13578]|1[02])(\/|-|\.)31)\1|(?:(?:0?[1,3-9]|1[0-2])(\/|-|\.)(?:29|30)\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:0?2(\/|-|\.)29\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00$|^(?:(?:0?[1-9])|(?:1[0-2]))(\/|-|\.)(?:0?[1-9]|1\d|2[0-8])\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
[via http://regexadvice.com/blogs/mash/archive/2004/04/02/300.aspx]

ma si tratterebbe probabilmente di masturbazione più che programmazione :P

[scusate ho letto ora ti dice anche se l'anno è bisestile, ma ormai avevo
scritto! :P]


 --
 Daniele Varrazzo - Develer S.r.l.
 http://www.develer.com

 __**_
 Python mailing list
 Python@lists.python.it
 http://lists.python.it/**mailman/listinfo/pythonhttp://lists.python.it/mailman/listinfo/python

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


Re: [Python] Eliminare carattere fine riga

2012-07-24 Per discussione Alberto Granzotto
2012/7/24 Lorenzo Macchiavelli lmacchiave...@gmail.com:
 Buongiorno a tutti.

 creando una tupla da un file di testo, mi ritrovo il fine riga \n

 listP = tuple(open(folfderList, 'r'))

 come posso eliminarlo in maniera non troppo macchinosa?

se il file non è enorme puoi fare:
 listP = open(folfderList, 'r').read().split('\n')

[occhio che ti tiene tutto in memoria]

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


Re: [Python] Eliminare carattere fine riga

2012-07-24 Per discussione Alberto Granzotto
2012/7/24 Marco Beri marcob...@gmail.com:
 2012/7/24 Daniele Varrazzo p...@develer.com

 In windows forse rstrip('\r\n') è anche meglio, ma non sono sicuro sia
 necessario (forse py converte CRLF - LF? Non mi ricordo).


 Secondo me non converte.

 marcob@pc-beruntu:~$ od -c x
 000  \r  \n
 002
 marcob@pc-beruntu:~/tmp$ python
 Python 2.7.2+ (default, Oct  4 2011, 20:03:08)
 [GCC 4.6.1] on linux2
 Type help, copyright, credits or license for more information.
 file(x, r).read()
 '\r\n'
 file(x, rb).read()
 '\r\n'


Converte se glielo dite (aka operatore 'U') :D

 open('foo.txt', 'wb').write(1\n2\r\n3\n)

 open('foo.txt', 'r').read().split('\n')
['1', '2\r', '3', '']

 open('foo.txt', 'rU').read().split('\n')
['1', '2', '3', '']

ref: http://docs.python.org/library/functions.html#open

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


Re: [Python] Unione espressioni regolari

2012-07-20 Per discussione Alberto Granzotto
2012/7/20 Marco Beri marcob...@gmail.com

 2012/7/20 Walter Valenti waltervale...@yahoo.it

 In un array di stringhe. Posso sempre infilarli in un tupla.


 Una roba così con la funzione all non ti garba?

  import re
  s = [12, ab, ZZ]
  all(re.match(.*%s.*%e, abcZZxx12) for e in s)
 True
  all(re.match(.*%s.*%e, abcZZxx1) for e in s)
 False


molto bello.

questo esempio mi ha acceso una lampadina (ammetto di non essermi mai posto
il problema), `all` e `any` cortocircuitano ma bisogna stare attenti:

In [1]: l = range(1000)

In [2]: timeit all([x for x in l])
1 loops, best of 3: 42.6 us per loop

In [3]: timeit all(x for x in l)
100 loops, best of 3: 661 ns per loop


oppure, per togliere ogni dubbio:

In [7]: def foo(x): print '.',; return x

In [8]: all([foo(x) for x in l])
. . . . . . [tanti altri puntini] .Out[8]: False

In [9]: all(foo(x) for x in l)
.Out[9]: False


nel primo caso mi sa che l'interprete genera la lista che poi è passata a
`all`. Nel secondo invece è sufficientemente sveglio da fare la cosa
giusta. La vedo un po' come la differenza tra range e xrange.

Scusate se per voi era ovvio, per me non lo era :P

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


[Python] [JOBZ] Urlist is hiring!

2012-07-09 Per discussione Alberto Granzotto
Ciao!
bentornati dalla EuroPython2012, purtroppo quest'anno non sono
riuscito a venire :(

Ho un annuncio per tutti i ninja che usano VIM e i pirati di Emacs:

  ** Urlist cerca uno/a developer back-end un/a developer front-end **

Siamo una startup tecnica e stiamo creando un servizio consumer web.
Ora siamo 2 sviluppatori (io e Stefano) e 1 ui/ux designer
(Valentina). Da inizio marzo il servizio è online all'indirizzo
http://urli.st/.

Potete trovare le nostre job description all'indirizzo:
 * http://urli.st/resources/jobs
(aspettate l'UFO!)

Altre info
 - Luogo di lavoro:
   Milano

 - Tipo di collaborazione:
   all'inizio sarà necessario stare fianco a fianco. Comunque siamo i primi
   a non amare gli orari d'ufficio: definiti i deliverable e le scadenze
   alcune parti del lavoro potranno essere svolte in autonomia.
   I requisiti più importanti sono sapersi coordinare con gli altri ed essere
   propositivi: abbiamo creato Urlist anche per fare le cose a modo nostro;
   vogliamo creare un ambiente stimolante dove poter anche organizzare
   workshop, mini-conferenze e feste.

 - Contratto proposto:
   Se possibile fatturiamo a una partita iva, altrimenti a progetto.
   Con l'idea che se le cose vanno bene ci vuole un attimo a cambiare
   contratto. Ma prima devono andare bene. è lo stesso contratto che ci
   stiamo facendo noi soci: una partita iva e due progetto.

 - Range retributivo:
   Per ora volevamo stare tra 1300/1400€ netti, stiamo parlando con il
   commercialista per premi produzione e *benefit*.
   Stessa cosa per i soci, non ci diamo stipendi da managerz.

 - Yarrr:
   usiamo solo software open source, parte del software che svilupperai per
   Urlist sei invitato a rilasciarlo con una licenza libera (dai un occhio al
   nostro profilo su GitHub https://github.com/urlist);
   ci piace stare sul bleeding edge e sperimentare tecnologie nuove e ti
   assicuro non ti annoierai! (alla peggio organizziamo una gita aziendale a
   Gardaland)


Chiudo dicendo che il lavoro non è *per* Urlist ma è *con* Alberto,
Stefano e Valentina. Cerchiamo persone che vogliano veder crescere un
servizio e mettersi in gioco per un obiettivo comune. E capiscano che
se le cose funzionano allora tutto li gruppo ne giova. Alle spalle
abbiamo un gruppo di investimento che ci dà stabilità a livello
economico e che ci metterà in contatto con altri investitori (che
hanno investito su soundcloud, ad esempio, quindi del giro). Puntiamo
in alto, è difficile ma con il team giusto ce la possiamo fare :)

Se non vi interessa direttamente vi sarei grato se poteste comunque
girarla a qualche gruppo o amico a cui possa interessare--inoltre
like, +1, tweet sulla pagina delle description ecc sono benvenuti!

ciao,
alberto

-- 
Alberto Granzotto
CEO  Co-founder

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


Re: [Python] problema con format string, convertire da nuova a vecchia

2012-07-06 Per discussione Alberto Granzotto
2012/7/6 Pietro peter.z...@gmail.com:
 Grazie Marco,

 modificando in questo modo funziona:

 %s - %s % 40.6f s % ('RasterNumpy', 'add', 0.008465832344)
 'RasterNumpy - add 0.008466 s'

 Non sono riuscito a mettere i punti al posto delle spazio... ma non è
 un grosso problema!

è poco leggibile ma magari ti aiuta:

 %s - %s %s s % ('RasterNumpy', 'add', ('%.6f' % 0.008465832344).rjust(40, 
 '.'))
'RasterNumpy - add 0.008466 s'

magari formattando il float con i puntini in una riga a parte ne
guadagni in leggibilità :)

ciao,
alberto

 Grazie ancora.

 Pietro
 ___
 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] Problema con try except

2012-07-03 Per discussione Alberto Granzotto
2012/7/3 Luca Bacchi bacch...@gmail.com:
 http://docs.python.org/library/sys.html#sys.exit

 sys.exit scatena una eccezione SystemExit

forse stai facendo un try..except troppo generico, tipo:

try:
v = func_che_genera_eccezione()
if not v:
sys.exit()
except:
print u'qualcosa è andato storto'

non è una buona pratica avere degli except troppo generici, ti
conviene specificare che eccezioni quell'except gestisce!
pic related: http://www.daimi.au.dk/~andos/images/catchemall.jpg

ciao,
alberto



 Il 03 luglio 2012 17:06, Vittorio Spina vittorio.sp...@gmail.com ha scritto:
 ma quale errore lo scatena? porta tutto fuori dal try un attimo e riporta
 l'errore...


 Il 03/07/2012 17:03, Walter Valenti ha scritto:

 Ho all'interno di un blocco try una condizione,
 per cui lo script può uscire regolarmente con sys.exit(0).

 Questo però mi scatena l'esecuzione del blocco except.
 Come posso ovviare a tale inconveniente ?

 Walter







   --
 Per favore non inviatemi allegati in formato MS Office.
 Utilizza alternativamente documenti in formato OpenDocument.


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


 --
 ==
 Spina Giovanni Vittorio
 email:  vittorio.sp...@gmail.com
 --
 mobile: +39 389 15 24 211
 ==

 :: AVVISO PRIVACY
 = = = = = = = = = = = = = = = = = = = =
 Il contenuto della presente e-mail ed i suoi allegati,
 sono diretti esclusivamente al destinatario e devono
 ritenersi riservati, con divieto di diffusione o di uso
 non conforme alle finalità per le quali la presente e-mail
 è stata inviata.
 Pertanto, ne è vietata la diffusione e la comunicazione
 da parte di soggetti diversi dal destinatario, ai sensi degli
 artt. 616 e ss. c.p. e D.lgs n. 196/03 Codice Privacy.

 Se la presente e-mail ed i suoi allegati sono stati ricevuti
 per errore, siete pregati di distruggere quanto ricevuto e
 di informare il mittente al seguente recapito:
 Mailto:vittorio.sp...@gmail.com
 ==


 ___
 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
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] attributo __loader__ dei moduli

2012-06-13 Per discussione Alberto Granzotto
ciao a tutt*,
stavo esplorando un po' il loading via file zip di moduli e risorse, e
ho scoperto questo attributo qui:
   __loader__

ho usato il mio google-fu per trovare informazioni e l'unica risorsa
ufficiale di python che ho trovato è questo PEP qui:
 * http://www.python.org/dev/peps/pep-0302/

che è stato integrated with Python as of 2.3a1, quindi credo di
poterlo usare in modo abbastanza tranquillo.

Volevo sapere, avete qualche puntatore a documentazione riguardo a
questo attributo? sapete che altri loader esistono? (fino a ora non mi
viene in mente nulla di diverso da `zipimporter`)

grazie, ciao,
alberto (AKA vrde)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] modulo TastyAuth (e presentazione)

2012-06-06 Per discussione Alberto Granzotto
ciao a tutt*,
sono Alberto (aka vrde), lavoro con python da un po' di tempo ormai,
magari ho visto molti di voi alle varie Pycon italiane (sempre
presente dalla numero 2).

Dall'anno scorso sto portando avanti un progetto, Urlist
http://urli.st interamente scritto in Python. Non sono qui a fare
pubblicità al servizio, al contrario vorrei invece condividere con voi
il modulo che ho scritto per Urlist per gestire la
auth(entication|orization).

Lo trovate qui:
 * https://github.com/vrde/TastyAuth

è basato su un modulo di Tornado che ho preso e riadattato.
Il codice che ho scritto io è sotto BSD (la parte di Tornado sotto
Apache License 2.0).

Quindi, prendete e forkatene tutti :P

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