Re: [Python] Grafici

2020-12-03 Per discussione Alessandro Dentella
On Thu, Dec 03, 2020 at 07:24:27PM +0100, Bruno Firmani wrote:
> Sto muovendo i primi passi in Python.

Benvenuto

> 
> Il mio problema è il seguente:
> 
> ho quattro liste numeriche:
> 
> xx = [x1,x2, ... ,xn]
> yy = [y1,y2, ... ,yn]
> ww = [w1,w2, ... ,wn]
> zz = [z1,z2, ... ,zn]
> 
> e dovrei far disegnare, per linee, in un unico grafico le liste di punti:
> 
> [ [x1,y1] , ... , [xn,yn] ]
> [ [x1,w1] , ... , [xn,wn] ]
> [ [x1,z1] , ... , [xn,zn] ]
> 
> Chiedo, se possibile, di avere indicazioni.

una cosa tipo zip(xx, yy)?

In [1]: xx = ['x1','x2', 'xn']
   ...: yy = ['y1','y2', 'yn']
   ...: ww = ['w1','w2', 'wn']
   ...: zz = ['z1','z2', 'zn']

In [2]: list(zip(xx, yy))
Out[2]: [('x1', 'y1'), ('x2', 'y2'), ('xn', 'yn')]

In [3]: list(zip(xx, ww))
Out[3]: [('x1', 'w1'), ('x2', 'w2'), ('xn', 'wn')]

*:-)


-- 
Sandro Dentella  *:-)
http://wikidattica.org Flashcard per la didattica
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Argomenti funzione posizionali e opzionali

2020-11-20 Per discussione Alessandro Dentella
On Fri, Nov 20, 2020 at 03:14:53PM +0100, Valerio Pachera wrote:
> Ciao a tutti, sto definendo una funziona a cui devo passare un valore per
> id o per nome.
> 
> Il mio approccio è stato questo
> 
> def modify_firma(signature_id='', signature_name='', content):
>if signatrue_id:
>   pass
> elif signature_name:
> pass
> 
> Ci sono due problemi: il parametro content è posizionale e va messo prima.
> Questo errore mi ha fatto pensare che devo passare almeno uno dei parametri
> signature_id o signature_name.
> Posso spostare la logica di controllo all'interno della funzione ma mi
> chiedevo quale sia la via migliore per gestire questa situazione.
> 
> L'altra idea è quella di mettere due parametri posizioni, il primo dei
> quali sarà un dizionario.
> 
> def modifiy_signature(reference, content):
> if 'id' in reference:
> pass
> elif 'name' in reference:
> pass


non mi è chiaro perché non metti content al primo posto::


   def modify_firma(content, signature_id='', signature_name=''):
  ...

Mettere un dizionario mi pare inutilmente complesso in questo caso.


sandro
*:-)

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


[Python] Coding per biennio superiori

2020-11-03 Per discussione Alessandro Dentella

Ciao,


scusate la mail parzialmente ot.

Un figlio di amici, costretto a casa per una frattura, vuole avvicinarsi in modo
autonomo al coding. Avete suggerimenti considerando che è in 1^ liceo?


sandro
*:-)


-- 
Sandro Dentella  *:-)
http://wikidattica.org Flashcard per la didattica
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] pip freeze, o "come essere sicuri delle dipendenze che sto installando"

2020-10-09 Per discussione Alessandro Dentella
On Fri, Oct 09, 2020 at 12:09:18PM +0200, Luca Bacchi wrote:
> Io faccio esattamente come con node:
> 
> pip3 install -r requirements.txt
> pip3 freeze > requirements-lock.txt
> 
> Dentro requirements.txt elenco le librerie che uso io, il primo livello, e
> spesso (non sempre) non indico il versioning. In questo modo so che
> 
> pip3 install -r requirements.txt
> 
> installa sempre le ultime versioni.
> 
> Poi però
> 
> pip3 freeze > requirements-lock.txt
> 
> mi permette di avere uno screenshot dell'ambiente esatto: tutte le librerie
> con le esatte versioni installate.

questo modo di operare "sembra" come yarn/npm ma in realtà si basa sulla
diligenza del programmatore di ricordarsi di eseguire "pip freeze".

Per esperienza non funziona in un ambienete normale. Ci sarà sempre qualcuno che
dimentica di farlo e oi sono problemi per ci deve usare qull'ambiente.

Pip-tools e Peotry sopperiscono a questo problema costringendoti ovviamente a
qualche limite. Ad esempio devi essere nella cartella giusta. Se ad esempio usi
un virtualenv per due progetti differenti (un progetti ed una libreria ad
esempio) per aggiungere a quel virtualenv devi magari cambiare cartella.

Sia Poetry che pip-tools ti danno una visibilità molto migliore di come un
pacchetto è finito nel tuo virtualenvm e per me è cosa buona e giusta.

Poetry usa il nuovo formato pyproject.toml e pip-tools usa setup.py o
semplicemente requirements.txt.

Se usi pyproject.toml avrai poblemi da un progetto che usa pip con l'opzione -e,
questo è documentato (è un limite di pip, non di Petry).


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


Re: [Python] Condivisione interna di librerie

2020-10-01 Per discussione Alessandro Dentella
On Thu, Oct 01, 2020 at 10:13:20AM +0200, Federico Fissore wrote:
> Alessandro Dentella wrote on 30/09/20 22:57:
> > 
> > Io tipicamente faccio dei package. Se so che la funzionalità è 
> > *potenzialmente*
> > utile in altri progetti faccio sicuramente un pacchetto che poi pubblico su 
> > un
> > mio server (basta una cartella con autoindex servita da nginx, nulla di 
> > che).
> > 
> 
> Anche tu aggiorni tutti i software che dipendono dal pacchetto, dopo che ne
> rilasci un aggiornamento?
> 
> Il fatto è che, quando ho proposto di ridurre la duplicazione del codice
> estraendolo in librerie condivise, mi è stato risposto che così avrei creato
> un accoppiamento e sarei stato costretto o ad aggiornare e rilasciare sempre
> tutto insieme, o a manutenere versioni diverse (ad esempio continuare a
> manutenere una 2.x perchè in qualche caso non è possibile passare alla 3, o
> richiede più tempo del previsto)
> 
> Ti sei trovato in questa situazione?
> 
> Io personalmente sì (con java) e la soluzione allora era aggiornare subito
> tutto l'aggiornabile: per il rimanente aprivo una issue di debito tecnico
> che cercavo di chiudere appena possibile

Decido caso per caso. A me piace documentare bene cosa fa ogni nuova release e
quindi a seconda se è un fix importante o se è l'aggiunta di una feature (che
magari in un certo contesto non mi serve) non lo faccio.


Aggiornare ha una costo e pure la disuniformità... Posso dirti che combatto con
le unghie e coi denti il copia incolla soprattutto quando sono più di 2 progetti
diversi.


C'è un secondo aspetto da tenere presente. Se fai un pacchetto sai devi
documentarlo, se copi ed incolli, l'esperienza mi dice che non lo documenterai.
Il collega che non capisce come funziona riscrive con la convinzione di essere
più bravo di quello precedente (magari semplicemente non ha compreso qualche
sottigliezza che l'altro aveva invece considerato).

Per questioni economiche se hai già venduto ad un cliente una soluzione è
difficile che torni ad aggiornare se non crea problemi... se non hai un
contratto di assistenza, come giustifichi le ore necessarie?

Agisco nello stesso modo quando non ho colleghi e lavoro a progetti miei.
Package separati ove ragionevole.


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


Re: [Python] Consigli per imparare python - Flashcard

2020-10-01 Per discussione Alessandro Dentella
On Thu, Oct 01, 2020 at 08:54:59AM +0200, Pietro Brunetti wrote:
> Ciao a tutti,
> Anche io ho iniziato a usare anki. All'inizio per l'inglese (funziona
> benissimo)

Posso allora suggerirti di provare il mio plugin che importa da reverso, ne
parlo in questo articolo:

  https://wikidattica.org/blog/reverso-anki

Con questo ho incamerato oltre 700 parole nuove in 4 mesi. È più difficile
trovare nuove parole che memorizzarle... (e se lo provi e ti piace non
dimenticarmi di up-votarlo *;-)

Anche mio figlio che inizia ora la 1^ media ci arriva con un bagaglio di 500+
parole imparate guardando video con un plugin molto simile (che però si appoggia
ad un servizio a pagamento: https://wikidattica.org/blog/fleex)

sandro
*:-)

-- 
Sandro Dentella  *:-)
http://wikidattica.org Flashcard per la didattica
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Consigli per imparare python - Flashcard

2020-09-30 Per discussione Alessandro Dentella
On Wed, Sep 30, 2020 at 06:13:12PM +0200, Domenico Pannullo wrote:
> Vorrei imparare python.


Colgo l'occasione per suggerire a tutti quelli che studiano cose nuove, e non
solo ai giovani.

Sono stato folgorato da un annetto abbondante dall'uso delle flashcard -uno
strumento per aiutare la memorizzazione- che ha una efficacia strepitosa. Lo si
percepisce in pochissimo tempo (10/15 gg qualche minuto al giorni bastano).

Solo per incuriosirrvi i pilastri teorici sono:

 * curva dell'oblio (forgetting curve)
 * ripetizioni dilazionate (spaced repetition)
 * richiamo attivo (active recall)

I 2 principali strumenti per  'giocare' le flashcard sono fatti in Python e
sono opensource: Anki [1] e Mnemosyne [2]

Ne sono rimasto così entusiasta che sto facendo partire il progetto Wikidattica
[3] per favorirne l'adozione nelle scuole e per farne un grosso progetto
collaborativo (dovesse interessarvi, fatevi vivi...). Vi suggerisco di dare
un'occhiata al sito per capire di che parlo.

Anki, di gran lunga il software più utilizzato e che vanta centiania di add-on è
in Python + QT5 ed è scritto... in modo veramente fetente. Credo che dal punto
tecnico sia il peggior software su cui abbia mai messo le mani.

Anche il modello di sviluppo si merita il premio per il progetto peggio gestito.
E parliamo di un progetto che ha una un forum da 50 mail/giorno.

Per fare 2 add-on che di fatto scaricano parole straniere da una api (reverso) e
un pagina web (fleex) e le caricano in un mazzo di carte mi sono rovinato il
fegato ed ho maledetto l'autore almeno una cinquantina di volte. È un triste
esempio che open source e Python non sono garanzie di per sè. Il prodotto però è
brutto esteticamente ma veramente efficace e pratico da usare.

sandro
*:-)



-- 
Sandro Dentella  *:-)
http://wikidattica.org Flashcard per la didattica
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Consigli per imparare python

2020-09-30 Per discussione Alessandro Dentella
On Wed, Sep 30, 2020 at 06:13:12PM +0200, Domenico Pannullo wrote:
> Vorrei imparare python.
> Conosco già un pò il linguaggio ma poco.
> Mi consigliate un corso efficace, non noioso, tipo queste app che ci sono in
> giro o lezioni online o su youtube?

Un sito che reputo molto ben fatto è https://realpython.com. Hanno molto
materiale gratuito ed alcuni video a pagamento. 

Su questo sito ho ad esempio studiato async e concorrenza quardando anche un
video a pagamento che ho trovato veramente ben fatto.



sandro
*:-)


-- 
Sandro Dentella  *:-)
http://wikidattica.org Flashcard per la didattica
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Condivisione interna di librerie

2020-09-30 Per discussione Alessandro Dentella
On Wed, Sep 30, 2020 at 05:53:23PM +0200, Federico Fissore wrote:
> Ciao a tutti
> 
> nel cercare di diventare esperto di python nel più breve tempo possibile,
> combatto con la mia eredità java/node/rust
> 
> Come fate a riciclare il codice di un modulo fra più progetti?
> 
> Trasformate quel modulo in una libreria da installare con pip? Libreria che
> pubblicate su un repository pip interno?
> 
> Oppure fate copia-incolla?

Io tipicamente faccio dei package. Se so che la funzionalità è *potenzialmente*
utile in altri progetti faccio sicuramente un pacchetto che poi pubblico su un
mio server (basta una cartella con autoindex servita da nginx, nulla di che).

Meno ovvio è come fare il pacchetto. È una delle aree in cui c'è sempre stato
più movimento. Adesso ad esempio si sta transitando, mi pare senza troppa
solerzia, da setup.py a pyproject.toml (PEP 518). [1]

Puoi forse cominciare da qui:

  https://packaging.python.org/


Per la creazione dei pacchetti i sono trovato molto bene con poetry [3]
che poi però mi ha dato grane quando dovevo trovare pacchetti su repo privati
(ma non sono sicuro che fosse colpa sua, onestamente). Poetry produce pacchetti
solo con il file di con `pyproject.toml` e per default produce anche le wheel.

sandro
*:-)



[1] https://snarky.ca/what-the-heck-is-pyproject-toml/

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


Re: [Python] uwsgi in docker: come interpretare questi log?

2020-09-15 Per discussione Alessandro Dentella
On Tue, Sep 15, 2020 at 02:27:38PM +0200, Riccardo Magliocchetti wrote:
> > Poi mi rendo conto che non so come interpretare i log:
> > che significa "app: 0" o alternativamente "app: -1"?
> > ieri credevo che app: -1 fosse quando andava in errore, ma vedo che ho molte
> > richiestecon app: -1 che sono andate a buon fine.

Aggiungo questi log caldi caldi...

[pid: 7|app: -1|req: -1/502] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:21 2020] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers 
in 83 bytes (0 switches on core 0)
[pid: 6|app: 0|req: 66/503] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:28 2020] GET / => generated 19217 bytes in 252 msecs (HTTP/1.1 200) 8 
headers in 339 bytes (1 switches on core 0)
[pid: 7|app: -1|req: -1/504] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:28 2020] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers 
in 83 bytes (0 switches on core 0)
[pid: 6|app: 0|req: 67/505] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:28 2020] GET / => generated 19217 bytes in 36 msecs (HTTP/1.1 200) 7 
headers in 310 bytes (1 switches on core 0)
[pid: 7|app: -1|req: -1/506] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:28 2020] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers 
in 83 bytes (0 switches on core 0)
[pid: 7|app: -1|req: -1/507] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:29 2020] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers 
in 83 bytes (0 switches on core 0)
[pid: 6|app: 0|req: 68/508] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:29 2020] GET / => generated 19217 bytes in 90 msecs (HTTP/1.1 200) 7 
headers in 310 bytes (1 switches on core 0)
[pid: 7|app: -1|req: -1/509] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:29 2020] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers 
in 83 bytes (0 switches on core 0)
[pid: 7|app: -1|req: -1/510] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:29 2020] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers 
in 83 bytes (0 switches on core 0)
[pid: 7|app: -1|req: -1/511] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:29 2020] GET / => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 headers 
in 83 bytes (0 switches on core 0)
[pid: 6|app: 0|req: 69/512] 172.24.0.5 () {42 vars in 562 bytes} [Tue Sep 15 
14:36:29 2020] GET / => generated 19217 bytes in 34 msecs (HTTP/1.1 200) 7 
headers in 310 bytes (1 switches on core 0)

Qui si vede chiaramente che a fronte della stessa richiesta il pid 7 va in
errore ed il pid 6 no. Quando la richiesta va in errore vedo "app: -1", ma in
altre circostanze non è così vanno a buon fine richieste che hanno "app: -1"


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


Re: [Python] uwsgi in docker: come interpretare questi log?

2020-09-15 Per discussione Alessandro Dentella
On Tue, Sep 15, 2020 at 02:27:38PM +0200, Riccardo Magliocchetti wrote:
> On 15/09/20 13:08, Alessandro Dentella wrote:
> > Ma a me l'applicazione va per lungo tempo e poi comincia a darmi errore 
> > "dopo un
> > po'" cosa che non mi era mai successa quando usavo uwsgi fuori da docker.
> 
> eh senza configurazione è difficile aiutarti, se vedi quell'errore devi
> vedere le linee subito dopo al log e risolvere la questione.

Quando ho quell'errore non ho alcun altro log..

La conf di uwsgi è la seguente:


[uwsgi]

prj_dir = /code/
wsgi-file = %(prj_dir)/web/wsgi.py
env = PYTHONPATH=%(prj_dir)/apps

socket-timeout = 200
buffer-size = 1
processes = 2
threads = 1

http = :8000
master = true
http-keepalive = 1
lazy-apps = 1
wsgi-env-behavior = holy

req-logger = file:/var/log/uwsgi/access.log
logger = file:/var/log/uwsgi/errors.log
chmod-socket= 664

static-map = /static=/code/static
static-map = /media=/code/media
## dj collectstatics viene lanciato con --links per risparmiare spazio
## quindi uwsgi richiede che si dichiari che anche il target è sicuro
static-safe = /code/web/static
static-safe = /usr/local/lib/
static-expires-uri = 
"/static/.*\.[a-f0-9]{12,}\.(css|js|png|jpg|jpeg|gif|ico|woff|ttf|otf|svg|scss|map|txt)
 31536"


> > Poi i rendo conto che non so come interpretare i log:
> > che significa "app: 0" o alternativamente "app: -1"?
> > ieri credevo che app: -1 fosse quando andava in errore, ma vedo che ho molte
> > richiestecon app: -1 che sono andate a buon fine.
> 
> dipende da chi risponde alle richieste

Ok, ora capisco che app: 0 => django  app: -1: static-map
Poi però trovo:

[pid: 7|app: -1|req: -1/53] 172.18.0.2 () {42 vars in 564 bytes} [Mon Sep 14 
13:25:16 2020] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 
headers in 83 bytes (0 switches on core 0)


Che dovrebbe essere gestita da django ed ha "app: -1", quindi sono punto e a
capo.

Inoltre che è req: -1/53. In modo ingenuo pensavo che fosse l'incrementale delle
request ricevute dall'istanza e poi dal singolo processo. Ma -1 esce da questo
schema, quindi di nuovo sono al palo...


La cosa che mi perplime è che la stessa richiesta venga servita a volte con
errore a volte no, tipo 50% delle volte in un modo e 50% nell'altro.

Oggi però non riesco ad avere un errore neanche a piangere...

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


Re: [Python] uwsgi in docker: come interpretare questi log?

2020-09-15 Per discussione Alessandro Dentella
On Tue, Sep 15, 2020 at 08:58:35AM +0200, Luca wrote:
> Il giorno lun 14 set 2020 alle ore 23:42 Alessandro Dentella <
> sandro.dente...@gmail.com> ha scritto:
> 
> > 
> >
> >   --- no python application found, check your startup logs for errors ---
> >
> > .. <https://lists.python.it/mailman/listinfo/python>
> >
> A me si solito capita quando ho dimenticato di installare qualche modulo,
> la pythonpath  o il virtualenv. e quindil'app o non parte o si pianta da
> qualche parte.
> in genere avviando a mano lo script un paio di volte trovo il punto.

Ma a me l'applicazione va per lungo tempo e poi comincia a darmi errore "dopo un
po'" cosa che non mi era mai successa quando usavo uwsgi fuori da docker.

Poi i rendo conto che non so come interpretare i log:
che significa "app: 0" o alternativamente "app: -1"? 
ieri credevo che app: -1 fosse quando andava in errore, ma vedo che ho molte
richiestecon app: -1 che sono andate a buon fine.


sandro

PS: esiste ancora una lista uwsgi? io non la trovo, ma in documentazione dicono
di scrivere in lista uwsgi...
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] uwsgi in docker: come interpretare questi log?

2020-09-14 Per discussione Alessandro Dentella
Ciao,


ho un docker creato partendo dal docker python-slim ed aggiungendo uwsgi come
wheel generata da me.

In questo docker c'è un processo uwsgi che serve un django, al momento ho::

  processes = 2
  threads = 1

e nel docker questo si vede così::

  PID TTY  STAT   TIME COMMAND
1 ?Ss 0:00 uwsgi --ini=/etc/uwsgi.ini --show-config
6 ?S  0:06 uwsgi --ini=/etc/uwsgi.ini --show-config
7 ?S  0:06 uwsgi --ini=/etc/uwsgi.ini --show-config
8 ?S  0:00 uwsgi --ini=/etc/uwsgi.ini --show-config

dopo un funzionamento corretto per un po' arrivo ad una situazione in cui il pid
7 va in errore, nei log leggo:

[pid: 6|app: 0|req: 3/5] 172.18.0.2 () {54 vars in 1490 bytes} [Mon Sep 14 
15:05:10 2020] GET /it/admin/ => generated 53493 bytes in 1075 msecs (HTTP/1.1 
200) 7 headers in 250 bytes (1 switches on core 0)
[pid: 7|app: -1|req: -1/53] 172.18.0.2 () {42 vars in 564 bytes} [Mon Sep 14 
13:25:16 2020] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 
headers in 83 bytes (0 switches on core 0)
[pid: 6|app: 0|req: 17/54] 172.18.0.2 () {42 vars in 565 bytes} [Mon Sep 14 
15:30:51 2020] GET /admin/ => generated 0 bytes in 44 msecs (HTTP/1.1 302) 3 
headers in 98 bytes (1 switches on core 0)
[pid: 7|app: -1|req: -1/55] 172.18.0.2 () {42 vars in 565 bytes} [Mon Sep 14 
13:30:57 2020] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 
headers in 83 bytes (0 switches on core 0)
[pid: 6|app: 0|req: 18/56] 172.18.0.2 () {42 vars in 565 bytes} [Mon Sep 14 
15:31:45 2020] GET /admin/ => generated 0 bytes in 78 msecs (HTTP/1.1 302) 3 
headers in 98 bytes (1 switches on core 0)
[pid: 7|app: -1|req: -1/57] 172.18.0.2 () {42 vars in 565 bytes} [Mon Sep 14 
13:31:52 2020] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 
headers in 83 bytes (0 switches on core 0)
[pid: 7|app: -1|req: -1/58] 172.18.0.2 () {42 vars in 565 bytes} [Mon Sep 14 
13:31:56 2020] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 
headers in 83 bytes (0 switches on core 0)
[pid: 7|app: -1|req: -1/59] 172.18.0.2 () {42 vars in 565 bytes} [Mon Sep 14 
13:31:59 2020] GET /admin/ => generated 21 bytes in 0 msecs (HTTP/1.1 500) 2 
headers in 83 bytes (0 switches on core 0)

Ed ad ogni errore nei log leggo::

  --- no python application found, check your startup logs for errors ---

Che mi lascia abbastanza perplesso.

1. Cosa significa che trova l'applicazione e poi non la trova più?

2. Che significa 'app'? noto che anche anche in altre applicazioni con più
   processi e thread io ho sempre "app: 0"


Ho l'impressione di avere iniziato ad avere problemi da quando ho evitato di
compilare uwsgi nel processo di creazione del docker, ma è difficile dire con
precisione in quanto l'errore non si presenta sempre e non da subito ed ho
cominciato da poco ad usare docker...

Ogni chiarimento/suggeriemento/lettura è ben accetto... anche l'indirizzo della
ml di uwsgi...


Sandro
*:-)




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


[Python] ottimizzazione inscatolamento...

2020-07-08 Per discussione Alessandro Dentella
Ciao,

un cliente ha il problema di ottimizzare il riempimento di alcuni scatoloni.
Sapete se esiste qualche programma possibilmente python che affronti
l'argomento?

Idealmente deve anche potere avere vincoli tipo: questa scatola è delicata,
lascala in cima...


Chiedo prima di buttarmi in rete a capire cosa esista, a volte questa lista
riserva piacevoli sorprese... e poi sonnecchia da troppo tempo!

sandro




-- 
Sandro Dentella  *:-)
http://wikidattica.org Flashcard per la didattica
http://trepalchi.itIl portale degli artisti
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Eseguire file creapdf.py in Debian

2020-05-29 Per discussione Alessandro Dentella
Ciao Daniele,

> 
> $> ls -l c*
> .rwxr-xr-x 4,1k daniele 29 mag 15:01 creapdf.py

Strano il . prima di rwx... mai visto! che significa?

> Dove però la prima "x" è sottolineata.

Anche questo mi suona molto strano
E dove sta il gruppo?
L'output a cui sono abituato è così:

  $ ll test.py
  -rwxr-xr-x 1 sandro sandro 30 mag 30 01:14 test.py

Che visualizzazione hai attivato?

Se fai partire una bash poi riesci ad eseguirlo?

> 
> Se do il comando:
> 
> $> python3 ./creapdf.py -c

come mai ora hai aggiunto "-c"? è necessario?

> Qualcuno saprebbe aiutarmi a ristabilire la mia autorità?

Correttissima questione di principio!


-- 
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
http://www.wikidattica.org Flashcard per la didattica
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Eseguire file creapdf.py in Debian

2020-05-29 Per discussione Alessandro Dentella
On Fri, May 29, 2020 at 09:38:17PM +0200, Pietro Brunetti wrote:
> Domanda da ignorante (mi aiuterete a migliorare) ma
> #!/usr/bin/python3
> 
> Funziona anche se python3 non è il quella Path? Funziona per qualsiasi
> interprete? Insomma... Come funziona?

No!

Se in quella posizione non hai Python, va in errore:

$ /tmp/test.py
bash: /tmp/test.py: /usr/python3: interprete errato: File o directory non 
esistente

La versione che ti è stata suggerita:

   #!/usr/bin/env python3

cerca nel $PATH, ovvero la lista delle cartelle dove vengono cercati
gli eseguibili, il primo eseguibile chiamato python3:

  env - run a program in a modified environment

puoi ad esempio chiamarlo anche da riga di comando:

  env python3

Ad esempio dall'interno di un virtualenv troverà il python relativo:

   sandro@bluffx:~$ env python
   Python 2.7.17 (default, Nov  7 2019, 10:07:09) 
   [GCC 9.2.1 20191008] on linux2
   Type "help", "copyright", "credits" or "license" for more information.
   >>> 

   sandro@bluffx:~$ workon base3

   (base3) sandro@bluffx:~$ env python
   Python 3.7.5 (default, Nov 20 2019, 09:21:52) 
   [GCC 9.2.1 20191008] on linux
   Type "help", "copyright", "credits" or "license" for more information.
   >>> 

sandro
*:-)


-- 
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti

http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Docker, postgresql e barman: suggerimenti cercansi...

2020-05-20 Per discussione Alessandro Dentella
On Wed, May 20, 2020 at 12:09:50PM +0200, Marco Beri wrote:
> 
> Per esempio questo, giusto di due settimane fa:
> https://www.2ndquadrant.com/en/blog/local-persistent-volumes-and-postgresql-usage-in-kubernetes/
> 

Grazie per il riferimento.
Leggendo altri articoli [1] ho notato che PostgreSQL è la 3^ immagine più usata 
in
docker... forse qualcuno la sta usando...

  One indication that containerized databases are trending is that Postgres, a
  well-known open source relational database, has been ranked in surveys as the
  third most popular technology run in Docker containers.

E se si va su hub.docker.com, le immagini più poplari sono esattamente 
database...



sandro


[1] 
https://containerjournal.com/topics/container-management/11-things-to-know-about-databases-and-postgres-in-containers/
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Docker, postgresql e barman: suggerimenti cercansi...

2020-05-19 Per discussione Alessandro Dentella
Ciao Davide,

On Tue, May 19, 2020 at 05:20:00PM +0200, Davide Muzzarelli wrote:
> Il 19/05/20 13:00, Alessandro Dentella ha scritto:
> > Posso ovviamente avere tanti cluster su una macchina fisica e gestire i 
> > backup
> > in modo indipendente ma mi chiedo se invece mi convenga pensare di usare 
> > anche
> > per postgres delle istanze indipendenti via docker.
> > 
> > Avete suggerimenti/bast practice da seguire?
> 
> Ciao Sandro!
> 
> Postgres è un servizio critico perché è dedicato alla persistenza dei dati.
> 
> Docker ha una lunga storia d'instabilità, bug e incompatibilità
> all'indietro.
> 
> Mai mettere Postgres, o qualsiasi altro database, su Docker perché rischi di
> trovarti coi dati corrotti, a meno che non lo usi giusto per lo sviluppo.
> 
> Questo articolo è di fine 2016 ma ancora perfettamente valido
> https://thehftguy.com/2016/11/01/docker-in-production-an-history-of-failure/

dall'articolo estraggo:

  It takes 5 years to make a good and stable software, Docker v1.0 is only 28
  months old, it didn’t have time to mature.

  The hardware renewal cycle is 3 years, the distribution release cycle is 18-36
  months. Docker didn’t exist in the previous cycle so systems couldn’t consider
  compatibility with it. To make matters worse, it depends on many advanced 
system
  internals that are relatively new and didn’t have time to mature either, nor
  reach the distributions.

  That could be a decent software in 5 years. Wait and see.

Beh... quasi ci siamo, quindi è il caso di leggere articoli più attuali per
farsi un'idea...

Detto questo, d'istinto ho tutte le mie perplessità a fare girare Postgres in un
docker, per questo resto ancora interessato a capire come si orienta ora la
comunità che frequesta questo gruppo.

[Nel frattempo ad esempio ho installato heptapod (gitlab con mercurial) e il 
loro
docker ha Postgresql al suo interno...]


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


[Python] Docker, postgresql e barman: suggerimenti cercansi...

2020-05-19 Per discussione Alessandro Dentella
Ciao a tutti,

sto per cominciare a dockerizzare alcune applicazioni django + frontent in vuejs
e backend in postgresql.

I db medi con cui ho a che fare sono piccoli, meno di 100 NB, alcuni arrivano a
qualche GB.

All'inizio ho pensato di tenere un pg classico (non dockerizzato) e fare che
tutti i siti utilizzino quello. Come vantaggio vedo il fatto di gestire un unico
backup via barman con meno controlli.

Uno svantaggio però è che ogni volta che devo ripristinare un db devo
ripristinare tutto il cluster. Questo è quello che ho sempre fatto e non mi pone
problemi particolari ma mi chiedo se sia la cosa migliore.

Posso ovviamente avere tanti cluster su una macchina fisica e gestire i backup
in modo indipendente ma mi chiedo se invece mi convenga pensare di usare anche
per postgres delle istanze indipendenti via docker.


Avete suggerimenti/bast practice da seguire?

grazie in anticipo
sandro
*:-)


-- 
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
https://wikidattica.it Flashcard per la didattica
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] OT: mercuria & heptapod

2020-05-14 Per discussione Alessandro Dentella
On Thu, May 14, 2020 at 11:02:10AM +0200, Carlos Catucci wrote:
> > so che su questa ml c'è un po' di gente che come me preferisce mercurial a
> > git.
> > Vorrei quindi condividere con voi la mia soddisfazione per la linea che
> > mercurial sta prendendo ultimamente e come abbiamo fatto fronte alla
> > chiusura di
> > bitbucket installando da docker heptapod (gitlab con mercurial):
> 
> 
> Onestamente il perche' del successo di GIT rispetto a Bazaar e Mercurial
> non mi e' mai stato chiaro. Lo stesso Torvald ha detto che se avesse
> conosciuto meglio GIT a suo tempo non lo avrebbe wscelto per i repo di
> Linux.


 mi risulta strano che abbia detto questo... l'ha scritto lui git...
a che ti riferisci?

?/<
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] OT: mercuria & heptapod

2020-05-14 Per discussione Alessandro Dentella


Ciao a tutti,


so che su questa ml c'è un po' di gente che come me preferisce mercurial a git.
Vorrei quindi condividere con voi la mia soddisfazione per la linea che
mercurial sta prendendo ultimamente e come abbiamo fatto fronte alla chiusura di
bitbucket installando da docker heptapod (gitlab con mercurial):

   https://heptapod.net/pages/docs.html

Quelli di Heptapod stanno aprendo anche un servizio a pagamento per chi è stato
lasciato a casa da Bitbucket...

A lato di tutto questo, ho avuto bisogno di chiedere in lista mercurial ed
heptapod alcune informazioni ed ho aperto un paio di issues sul bug-tracker di
mercurial, ottenenedo risposte e soluzioni nel giro di pochissime ore.

Le cose che mi han lasciato particolarmente soddisfatto sono:

 * i topics (branching condiviso in fase draft che permette iscrittura della
   storia)
 * histedit
 * absorb

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


Re: [Python] GUI fatta con Glade e GTK2

2020-04-20 Per discussione Alessandro Dentella
On Sat, Apr 18, 2020 at 06:44:13PM +0200, Federico Fissore wrote:
> Ciao a tutti
> 
> mi trovo a voler smanettare con una GUI descritta con Glade con target GTK2,
> mentre il resto dell'applicazione è in python 2. L'unica versione di Glade
> che riesco a installare su ubuntu 18 supporta solo GTK3.
> 
> Vi siete mai trovati in una situazione simile? Come l'avete risolta?

Ubuntu 18 supporta ancora gtk2, anche Ubuntu 19.10, mentre credo che la nuova
20.04 lo abbandoni.

Lo dico con certezza, ho una libreria fatta nel 2008 che uso ancora ora,
"sqlkit" che è fatta in gtk2 e python2 ed è ancora inserita in ubuntu 19.10 (apt
install python-sqlkit).

Non è piu inserita in Ubuntu Fossa, la nuova 20.04 e questo mi ¨costringerਠa
curarne il porting ed a rivangare cose oramai dimenticate...

> Io pensavo di farmi una VM o un'immagine docker con una vecchia
> ubuntu/debian e di farci girare una versione di Glade abbastanza vecchia, ma
> forse ci sono metodi più immediati

Interessante come soluzione transitoria... deve essere una docker completa anche
del server X e poi ne esporti il DISPLAY? corretto?


sandro
*:-)

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


Re: [Python] venv + Debian

2020-03-15 Per discussione Alessandro Dentella
On Sun, Mar 15, 2020 at 11:28:45AM +0100, Raffaele Salmaso wrote:
> On Sun, Mar 15, 2020 at 11:21 AM Alessandro Dentella <
> sandro.dente...@gmail.com> wrote:
> 
> > Sai dirmi come fare con pip-tools ad aggiungere una dipendenza in modalità
> > development, ovvero senza installarla ma estendendo il path?
> >
> In questo ho abbozzato un differente requirements-dev.in con i path di
> sviluppo,
> ma devo ancora affrontare bene la questione quindi se ci sono altri
> suggerimenti sono i benvenuti :)
> 
> Immagino che nel file `.in` uno debba usare l'opzione -e, ma nel tentativo
> > fatto
> > non ho azzeccato la sintassi.
> 
> -e /repo/path/pkg
> Non funziona? a me si

La proverò, ma è terribile:

non voglio scrivere una posizione assoluta che poi sia diversa per i miei
colleghi... devo poterla mettere con una variabile d'ambiente o con un file di
configurazione (buildout prevede tutto questo)

sandro


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


Re: [Python] venv + Debian

2020-03-15 Per discussione Alessandro Dentella
Ciao Raffaele, 

On Sun, Mar 15, 2020 at 10:04:49AM +0100, Raffaele Salmaso wrote:
> On Thu, Mar 12, 2020 at 11:18 AM Alessandro T.  wrote:
> 
> > Ciao ML,
> >
> > affascinato dalla separazione tra sistema e ambiente di sviluppo ho
> > iniziato ad usare venv; principalmente perché presente nella standard
> > library e perché la procedura di upgrade sembra piuttosto semplice.
> > Quindi, per ogni nuovo progetto un bel:
> >
> > python3 -m venv venv
> >
> meglio essere più precisi
> $ python3.7 -m venv venv
> 
> E per i requirements puoi usare pip-tools, che semplifica di molto (senza
> stravolgere il flusso di lavoro) la gestione dei requirements.txt e
> sincronizzazione dei venv
> https://github.com/jazzband/pip-tools




Sai dirmi come fare con pip-tools ad aggiungere una dipendenza in modalità
development, ovvero senza installarla ma estendendo il path?

Spesso mi capita di sviluppare un progetto che preveda l'edit di più pacchetti
python in contenporanea. Con buildout (strumento abbastanza di nicchia, mi
rendo conto) ho sempre gestito perfettamente questa situazione che invece trovo
poco gestita nel mondo pip/pip-tools/poetry ma forse solo perché non mi ci sono
ancora applicato...

Immagino che nel file `.in` uno debba usare l'opzione -e, ma nel tentativo fatto
non ho azzeccato la sintassi. Peraltro una corretta gestione dovrebbe potere
prevedere quello che per yarn è 'link': dichiaro la dipendenza ma in *questa*
installazione quel pacchetto lo prendo da *quella* posizione.

Complessivamente `poetry` l'ho trovato ancora meglio come workflow e chiarezza
nell'uso ma ci ho trovato ancora dei bug bloccanti soprattutto nell'uso di
repository privati (i pacchetti non vengono trovati)


sandro
*:-)


PS: Non ho ricevuto le mail di cui questa mail è una risposta
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Richiesta chiarimento su SyntaxWarning

2020-01-13 Per discussione Alessandro Dentella
On Mon, Jan 13, 2020 at 10:16:35AM +0100, Marco Beri wrote:
>On Mon, Jan 13, 2020 at 9:09 AM Giovanni Porcari
><[1]giovanni.porc...@softwell.it> wrote:
>
>  Marco ho fatto una prova che non mi riesco a spiegare: tu ne hai una
>  ragione ?
>  (python 3.7.5)
>  >> a='xy'
>  >>> b='xy'
>  >>> a is b
>  True
>  >>> a='x y'
>  >>> b='x y'
>  >>> a is b
>  False
>  >>> a='x_y'
>  >>> b='x_y'
>  >>> a is b
>  True
>  >>>
>  Hai spiegazioni ?
>
>Te le ha già date (alla grande!) Carlo.
>Per capire se "is" torna True puoi anche usare id():
>>>> a="xy"
>>>> b="xy"
>>>> id(a)
>140205877191544
>>>> id(b)
>140205877191544
>>>> a="x y"
>>>> b="x y"
>>>> id(a)
>140205877191600
>>>> id(b)
>140205877191656
>>>>
>Comunque da qui si capisce la pericolosità di usare "is" a sproposito
>:-)
>Ciao.
>Marco.

Non mi è chiaro, stai suggerendo che questo sia un uso scorretto di
"is"? A me pare corretto ed istruttivo... che intendi?

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


Re: [Python] Ide python integrato in webapp

2019-12-18 Per discussione Alessandro Dentella
On Wed, Dec 18, 2019 at 12:45:20PM +0100, Piacenza Federico wrote:
>> Giusto per capirci, vuoi avere jupyter dentro una tua app web?
>> Che detto in altro modo significa: hai presente jupyter?
>
>non conosco bene jupyter (appena posso me lo studio) ma a me basterebbe
>implementare una versione molto molto light di pycharm...
>da come mi hai risposto sembra un obiettivo troppo ambizioso, questo
>stai dicendo?

Si a me sembra ambizioso.

>
>> Non conosco il modo di integrare jupyter in una tua app, ma di sicuro
>
>
>in effetti adrebbe bene anche qualcosa di già sviluppato lato web ma
>che è fatto in modo da potersi integrare facilmente nella mia webapp.

La soluzione #3 di cavallinux è esattamente un notebook jupyter.
Senza  bisogno di studiarlo *provalo*! o guardati una presentazione du
youtube e ti rendi subito conto se è quello che cerchi nel caso poi
cerca di integrarlo. Una veloce ricerca mi ha portato questo link che
non ho veramente tempo di approfondire:

  https://www.quora.com/How-can-I-embed-ipython-notebook-file-in-my-website

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


Re: [Python] Ide python integrato in webapp

2019-12-18 Per discussione Alessandro Dentella
On Wed, Dec 18, 2019 at 12:28:53PM +0100, Piacenza Federico wrote:
>Salve a tutti,
>devo implementare un mini ide python ad interfaccia web in una webapp
>che sto sviluppando;
>questa webapp permettera di scrivere dei test in python (senza avere
>nessun interprete e nessun ide installati sulla propria macchina) che
>verranno runnati in un ambiente di test direttamente lato server.
>in pratica voglio dare la possibilità agli utenti di questo  webapp di
>scrivere e runnare i test direttamente dal browser:
>a tal proposito dovrò implementare sull' interfaccia:
>1) la possibilita di inserire i breakpoint
>2) la possibilità di visualizzare il contenuto delle variabili (quando
>il running si ferma su un brakpoint)
>3) vorrei anche implementare un intellisense.
>- qualchuno ha già fatto cose simili?
>- Suggerimenti?
>- per i punti 1,e 2 vorrei utilizzare il debugger nativo di python, c'è
>qualche modo più intelligente per farli?
>- per il punto 3 inipendentemente dalla complessita di sviluppo lato
>client (javascript), esiste qualche algoritmo o programma che si prende
>in pasto un pezzo di codice python e capisce la natura degli oggetti?
>(sfruttando le python notations)
>vi ringrazio anticipatamente per tutti i suggerimenti che mi darete

Giusto per capirci, vuoi avere jupyter dentro una tua app web?
Che detto in altro modo significa: hai presente jupyter?

Non conosco il modo di integrare jupyter in una tua app, ma di sicuro
non mi metterei a rifare ciò che funziona egregiamente e che
chiaramente non è banale reimplementare.

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


Re: [Python] Generare Screenshot automatici per pagine web

2019-09-26 Per discussione Alessandro Dentella
On Thu, Sep 26, 2019 at 12:17:39PM +0200, Esalando Prassi wrote:
> On Thu, 26 Sep 2019 at 11:43, Lorenzo Macchiavelli
>  wrote:
> >
> > Buongiorno Lista,
> >
> > qualcuno potrebbe consigliarmi un modulo di python semplice,
> > per generare degli screenshot automatici di pagine web?
> >
> > Ho provato ChromeDriver, ma mi sembra troppo macchinoso..
> > dato che dovrei usarlo in un cron job che parte più volte al giorno,
> > non vorrei finestre che si aprono..
> >
> > Qualche idea?
> >
> Proverei questo:
>
> - https://pypi.org/project/pyppeteer/
>
> Si basa su https://try-puppeteer.appspot.com



Bello e veloce (circa 7 secondi sulla mia macchina una script da
zeroper un solo sito)!
bel suggerimento, l'avevo visto ma poi ho creduto fosse più veloce (da
implementare) un servizio esterno mentre è veramente semplice.



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


Re: [Python] Generare Screenshot automatici per pagine web

2019-09-26 Per discussione Alessandro Dentella
On Thu, Sep 26, 2019 at 11:43:13AM +0200, Lorenzo Macchiavelli wrote:
>Buongiorno Lista,
>qualcuno potrebbe consigliarmi un modulo di python semplice,
>per generare degli screenshot automatici di pagine web?
>Ho provato ChromeDriver, ma mi sembra troppo macchinoso..
>dato che dovrei usarlo in un cron job che parte più volte al giorno,
>non vorrei finestre che si aprono..
>Qualche idea?


io ho appena affrontato questo problema ed ho risolto usando servizi
esteri che fanno screenshot [1]. Usando requests prelevo l'immagine. Ci
mettono quasi 20 secondi (varia da sito a sito).

Normalmente non sono gratuiti ma ti danno 100/250 screenshot gratuite
al mese. Dipende da quante screenshot devi fare tu...


sandro
*:-)



[1] https://underconstructionpage.com/best-site-screenshot-api-services/
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] problemi di importazione modulo python

2019-08-13 Per discussione Alessandro Dentella
On Mon, Aug 12, 2019 at 05:54:45PM +0200, Riccardo mancuso wrote:
>Ciao a tutti,
>ho un comportamento strano circa l'import di un modulo (pyexcel): se lo
>carico dalla bash di python mi dice che è inesistente, se lo carico da

"la bash di Python..." mi manca! *:-)

>"ipython" invece non mi dà errore.
>E questo vale per tutti i nuovi moduli che vado ad installare (mediante
>pip).

io confronterei i due risultati di sys.path, ti accorgerai
sicuramente che sono due environment differenti. Se usi virtualenv ci
scommetto che uno è dentro e l'altro no...


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


Re: [Python] Ricerca e sostituzione con regex

2019-06-19 Per discussione Alessandro Dentella
On Wed, Jun 19, 2019 at 10:24:47PM +0200, Daniele Zambelli wrote:
> Il giorno mar 18 giu 2019 alle ore 16:46 Lorenzo Buonanno
>  ha scritto:
> >
> > Perché contiene un carattere che hai imposto di escludere in [^\$], c'è una 
> > ragione per cui invece di escludere caratteri dentro la stringa non puoi 
> > usare espressioni non greedy come suggerito più volte in questo thread?
>
> La ragione è che non avevo capito. Combinando la tua dritta con quella
> di Marco ho ottenuto questo:
>
> ...
> result = re.sub(r"(? input_text, flags=re.S)
> result = re.sub(r"(? result, flags=re.S)
> ...
>

posso solo suggerire che per aumentare la leggibilità puoi usare
re.VERBOSE (*) che ti permette di scrivere il pattern su più righe con i
commenti:

   pattern = re.compile('''
  (?https://docs.python.org/3.7/library/re.html#re.VERBOSE
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] [OT] Richiesta aiuto scelta tastiera.

2019-05-16 Per discussione Alessandro Dentella
Ciao Gabriele,

On Thu, May 16, 2019 at 04:39:29PM +0200, Gabriele Battaglia wrote:
> Reply to the Paolo Melchiorre's message, wrote on 16/05/2019 at 16:31:
> >
> >Gabriele io ti consiglierei la mia tastiera che è una Logitech K780 ,
> >ha il tastierino numerico, è bluetooth, la connetti a 3 dispositivi
> >(ex: pc , smartphone, tv) ma per i tasti direzionali (pag su, home etc
> >) devi usare un tasto di funzione e credo che manchi la
> >possibilità di attivare il menu contestuale. Adesso non la ho con me
> >ma quando tornerò a casa la controllo e ti scrivo.
> >
> Grazie Paolo.
> Aspetto la tua risposta. Aimè il tasto "Applicazioni" è fondamentale perchè
> simula il click destro del mouse e mi serve.

Sul mio portatile Ubuntu ho rimappato AltGr (che non uso mai) con il
click centrale con  questa riga di comando:

  xmodmap -e "keycode 108 = Pointer_Button2"

Cerca il keycode emesso da un tasto che non usi e fagli fare quello
che vuoi...

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


Re: [Python] lista morta...

2019-04-30 Per discussione Alessandro Dentella
On Tue, Apr 30, 2019 at 09:03:43AM +0200, Marco Beri wrote:
>On Tue, Apr 30, 2019 at 8:58 AM Alessandro Dentella
><[1]san...@e-den.it> wrote:
>
> Agli antipodi di stackoverflow & co. (dove pure ho avuto una
>  brutta
> esperienza recentemente) che favorisce la costruzione stabile di
> soluzioni valide.
>
>Davvero?


Mi spiego, ma premetto che ho un apprezzamento incondizionato per
stackoverflow che considero una delle cose più intelligenti e ben
riuscite che ci siano. Una piattaforma dove vincono tutti...

... però non è tutto così

ho postato una domanda su come modificare programmaticamente in
javascript una immagine per ottenere lo stesso effetto che si ottiene
applicando la direttiva css:

   background-color: #076AB3;
   background-blend-mode: luminosity;

La domanda è stata sospesa e poi chiusa (quindi ora non più visibile)
nel giro di pochissimo tempo giudicando che fosse poco chiara e quando
ho scritto nella sezione meta[1] per chiedere chiarimenti su cosa
avesse determinato questo zelo ho ricevuto una marea (15) di downvote
ed un solo commento che afferma che er tutto chiaro (ed in effetti
aveva scritto una risposta). L'unico oggettiva critica era relativa al
fatto che avevo fatto 2 typo nel titolo, osa che fu presa per
sciatteria, ma da qui a chiudere una domanda che peraltro ha un suo
interesse tecnico il passo è grande ed inspiegabile.

Ho poi in seguito letto di medium un articolo che raccontava di
una deriva del "potere distribuito" che permette a tutti di fare i
censori altrui che aveva prodotto uno scontento ed un allontanamento
dalla piattaforma.


sandro



https://meta.stackoverflow.com/questions/380767/really-puzzled-by-question-closure?noredirect=1#comment674160_380767
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] lista morta...

2019-04-30 Per discussione Alessandro Dentella

On Mon, Apr 29, 2019 at 01:47:27PM +0200, Giovanni Porcari wrote:

> Il canale di Telegram sta alla ML come uno strunz sta a un babà…



molto efficace.

Io non ho neanche ipotizzato di iscrivermi al canale telegram, non
sopporto la chat come strumento di lavoro:

1. spinge alla domanda e risposta compulsiva invece che meditata. Al
   50% delle volte quando screivo una domanda, proprio per come metto giù
   tuttew le informazioni perché altri le possano capire bene e per
   mostrare di avere già fatt una parte del percorso verso la soluzione,
   mi chiarisco abbastanza le idee da non avere bisogno di postare.

2. Manca di indicizzazione, quindi serve solo a chi in quel monento
   segue e basta

3. Spesso non si riesce neanche a seguire le risposte alle proprie
   domande, in quanto sono disperse in mezzo alle altre e non si
   riesce neanche a seguire il thread... Nei frontend uso vuejs ed in
   particolare vuetify che ha una chat con discord: un vero incubo!

   Agli antipodi di stackoverflow & co. (dove pure ho avuto una brutta
   esperienza recentemente) che favorisce la costruzione stabile di
   soluzioni valide.

   Della pagina fb anco sapevo l'esistenza, ma di nuovo non mipare lo
   strumento giusto

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


[Python] siti per apprendere Python

2019-01-14 Per discussione Alessandro Dentella
Ciao,


da tantissimo non guardo più cosa ci sia come risorse utili per
l'apprendimento di Python.

Ho avuto un paio di richieste da persone completamente digiune di
programmazione, avete suggerimenti, magari che guidino anche con
esercizi? So che alcuni in lista insegnano alle superiori, magari
hanno meglio idea dei problemi di chi approccia da zero...

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


[Python] Sintassi sconosciuta...

2018-10-16 Per discussione Alessandro Dentella
Ciao a tutti,


mi sono accorto dopo tanti anni di uso di Python di non avere idea di
questa sintassi:

  [tmp_loc] = glob.glob(os.path.join(tmp_dest, '*'))

che trovate usata qui:

  
https://github.com/buildout/buildout/blob/master/src/zc/buildout/easy_install.py#L1740

Che cosa fa? che senso ha usarla quando mi vengono in mente vari altri
modi di ottenere quello che (forse, penso) faccia.

Soprattutto, quella riga st creandomi problemi...

Chi mi sa illuminare?


Grazie
sandro
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] tutorial linguaggio

2018-07-14 Per discussione Alessandro Dentella
On Sat, Jul 14, 2018 at 06:21:55PM +, Luigi Russo wrote:
> Il 14/07/2018 19:00, laziale ha scritto:
> > scusa luigi, mi spiegheresti cosa fa il programma biblos?
> > è tipo winguido o tipo nvda?
> > mi spiego, ho un sito che mi interessa, ma purtroppo come sai, anzi spero 
> > di essere smentita volentieri, comunque, come sai noi non vedenti il 
> > linguaggio nella quale è scritta la parte che mi interessa è scritta in 
> > flash, appunto linguaggio da noi non utilizzabile.
> > se questo biblos mi risolve questo problema lo scarico anche subito! :D
>
> Luigi:
> Biblos non è un lettore di schermo ma un Word Processor, per intenderci,
> è l'equivalente di Word e affini ma permette anche di stampare in
> Braille e fa altre mille mila cose, ovviamente riferite all'ambito della
> videoscrittura.
> Per noi Flash non sarà mai accessibile perché è tutto grafico, inutile
> perderci del tempo.
> Detto questo, se hai altre domande scrivi in privato dato che siamo
> andati fuori tema direi.

Forse siete parzialmente fuori tema, ma a me che spesso creo
interfacce web, non dispiace avere uno stimolo che mi ricorda che
altri fan fatica... e che un po' di attenzione in più può
facilitarli...

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


Re: [Python] class import path

2018-06-12 Per discussione Alessandro Dentella
On Tue, Jun 12, 2018 at 10:44:50PM +0300, Matteo Perini wrote:
> ciao a tutti,
>
> ho un progetto che contiene una serie di sub-directory (diciamo src e lib).
>
> ora in un file project/src/file1.py  avrei bisogno di una classe (myclass)
> che è presente in project/lib/class.py
>
> come posso importarla?
>
>
> se il file è nella stessa directory scrivo:
>
> from class import myclass
>
> se è in una sub-directory scrivo:
>
> from sub-directory.class import myclass
>
>
> Ma nel caso sopra?


tutto dipende da come hai impostato il sys.path.  [i nomi mi pare che
siano troppo generici per essere utili ed espressivi, ipotizzo che
siano nomi utilizzati solo nell'esempio, rinominiamo class.py in
my_class.py comunque per evitare "from class import..."]

Con una struttura come questa, che non reputo molto standard, farei in
modo che il sys.path comprenda sia project/src che project/lib, quindi
da file1 potresti fare direttamente: from my_class import MyClass

Dico che non la reputo std perché i sorgenti vengono messo o in lib o
in src (solo per convenzione, non per necessità): perché separarne una
parte di qui ed una li là? le librerie non sono esse stesse dei
sorgenti? perché non fare src/file1.py src/lib/... bada che questa
differente struttura non è "migliore" e non risolve nessun problema di
per sè, solo a me sembra più logica.

Un file con nome 'class.py' va assolutamente evitato, a meno che non
cerchi guai, manda in confusione il sistema delle importazioni
(provalo!). È più ragionevole che il nome del file suggerisca già la
funzione (nel senso lato). Anche le cartelle hanno spesso il nome che
già indica cosa contengono (es.: django.contrib.auth)



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


Re: [Python] pipenv (Was: Xkcd again)

2018-05-04 Per discussione Alessandro Dentella
On Fri, May 04, 2018 at 11:35:03AM +0200, Raffaele Salmaso wrote:
>2018-05-04 11:07 GMT+02:00 Alessandro Dentella <[1]san...@e-den.it>:
>
>  On Fri, May 04, 2018 at 10:29:56AM +0200, Raffaele Salmaso wrote:
>  >2018-05-01 8:59 GMT+02:00 Alessandro Re
>  <[1][2]akirosspo...@gmail.com>:
>  >
>  >[2][3]https://github.com/pypa/pipenv ci darà un futuro
>  migliore? :)
>  >
>  >No
>  Lo dici perché è solo un elemento in un groviglio di strumenti o
>  perché ne conosci i limiti? Se ne vedi limiti puoi raccontarli?
>
>Più che altro è un tool che usa pip e i virtualenv alla base,
>quindi non vedo come possa essere differente da adesso, se non
>automatizzando il processo
>(io lo faccio già: personalmente installo i programmi in un virtualenv
>dedicato al singolo programma, ma nulla può evitare una situazione del
>genere anche se in un virtualenv [4]https://blog.npmjs.org/post/
>173526807575/reported-malicious-module-getcookies )

Speravo, -ma non ho ancora avuto tempo di indagare- che pipenv graph
risolvesse il probema di cosa hai installato e cosa era una
dipendenza.

Trovo che troppi sviluppatori si affidano erroneamente al
requirements.txt che è una fotografia di uno stato funzionanate e
nulla ha anche fare con i vincoli di dipendenza. Speravo -dal nome-
che tenesse traccia di cosa ho richiesto esplicitamente e cosa è stato
installato per dipendenza. Cosa perfettamente funzionante ad esempio
in apt-get.

Io personalmente uso solo buildout che mi risulta molto, molto più
chiaro, ricalcola le dipendenze ogni volta e mi contringe ad avere un
setup.py corretto, pena la non installazione dei pacchetti.

Ad altri la precisione sta stretta...

>A naso, non ho ancora provato, solo guardato la
>doc, [5]https://poetry.eustace.io/ mi sembra più promettente come tool.

che, come l'altro alla fine è basato su virtualenv...:

   When you execute the install command (or any other "install" commands
   like add or remove), Poetry will check if it's currently inside a
   virtualenv and, if not, will use an existing one or create a brand new
   one for you to always work isolated from your global Python
   installation.

sandro
*:-)

--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Xkcd again

2018-05-04 Per discussione Alessandro Dentella
On Fri, May 04, 2018 at 10:29:56AM +0200, Raffaele Salmaso wrote:
>2018-05-01 8:59 GMT+02:00 Alessandro Re <[1]akirosspo...@gmail.com>:
>
>[2]https://github.com/pypa/pipenv ci darà un futuro migliore? :)
>
>No

Lo dici perché è solo un elemento in un groviglio di strumenti o
perché ne conosci i limiti? Se ne vedi limiti puoi raccontarli?

Proprio in questi giorno pensavo di guardarlo un po' da vicino per
capire se apporta miglioramenti a pip che considero veramente origine
di molti problemi.


sandro
*:-)

--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti

http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] uso di str.format

2018-05-03 Per discussione Alessandro Dentella
On Thu, May 03, 2018 at 11:20:04AM +0200, Massimiliano Rosi wrote:
> Ciao a tutta la lista,
> vi chiedo un consulto, sull'utilizzo di str.format, cioè:
>
> '{:.2f}'.format(55.6789)
> ritorna:
> '55.68'
>
> è possibile modificare a runtime quante cifre dopo la virgola
> visualizzare? Ho tentato (sicuramente sbagliando), ad utilizzare
> qualcosa del tipo:
>
> '{:g}'.format(55.6789, g=':.2f')
> il cui risultato è:
> 55.6789

Format specifiers can themselves contain replacement fields. For example, a 
field whose field width is itself a parameter could be specified via:


In [3]: "{0:.{1}f}".format(3.14185, 2)
Out[3]: '3.14'


La frase è presa da qui: https://www.python.org/dev/peps/pep-3101/

sandro
*:-)



--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti

http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] ValueError: embedded null byte

2018-04-04 Per discussione Alessandro Dentella
On Wed, Apr 04, 2018 at 12:05:44PM +0200, Gollum1 wrote:
> Il 4 aprile 2018 08:56, Alessandro Dentella <san...@e-den.it> ha scritto:
>
> >> camera = "DigitalDigital HH"
> >
> > Se fosse veramente quello il valore della variabile 'camera' non ci
> > sarebbero problemi:
> >
> >$ ipython3
> >
> >In [1]: import os
> >
> >In [2]: camera = "DigitalDigital HH"
> >
> >In [3]: os.path.exists(os.path.join('/tmp', camera))
> >Out[3]: False
> >
> > Per prima cosa aggiungerei nel try/except:
> >
> >import ipdb; ipdb.set_trace()
>
> questo non mi funziona, non ho il modulo installato evidentemente,
> provvederò quanto prima.

vitale per un debug efficace:

   pip install ipdb


> > così sperimenti direttamente e ti fai un'idea chiara.
> > len(camera) ti restituisce 17 o la variabile ha qualche carattere non
> > rappresentato magari nella tua codifica?
>
> bella lì... mi len mi dice che è lungo 32 caratteri... :O
>
> > Prova con repr(camera)
>
> (32) - DigitalDigital HH
> 'Digital\x00\x00Digital 
> \x00H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00'
>
> eccolo lì... e spiegato anche il motivo per cui anche facendo uno
> split sullo spazio, in realtà non risolvevo il problema, non è
> visibile, ma rompe...
>
> esiste un qualche comando che mi permetta di "sanare" una stringa così
> fatta? un camera.encode(utf8) potrebbe essere la soluzione?

In [2]: import re

In [3]: camera = 'Digital\x00\x00Digital 
\x00H\x00\x00\x00\x01\x00\x00\x00H\x00\x00\x00\x01\x00'

In [4]: c2 = re.sub('[^a-zA-Z0-9_ ]', '', camera)

In [5]: len(c2)
Out[5]: 17

In [6]: c2
Out[6]: 'DigitalDigital HH'

In [7]: len(camera)
Out[7]: 32



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


Re: [Python] ValueError: embedded null byte

2018-04-04 Per discussione Alessandro Dentella
> quando però vado a fare le seguenti istruzioni, per verificare se
> esiste la directory, prima di crearla, quando incontra un particolare
> file, mi crasha, con il seguente errore:
>
> Traceback (most recent call last):
>   File "./RinominaFoto.py", line 80, in 
> scan_dir(args)
>   File "./RinominaFoto.py", line 67, in scan_dir
> if not os.path.exists(os.path.join(args['destdir'], camera)):
>   File "/usr/lib/python3.6/genericpath.py", line 19, in exists
> os.stat(path)
> ValueError: embedded null byte
>
> la riga incriminata è ovviamente:
>
> if not os.path.exists(os.path.join(args['destdir'], camera)):
>
> e presumo che l'errore stia nella varibile camera.
>
> in questo particolare file il valore, subito prima di crashare è il seguente:
>
> camera = "DigitalDigital HH"

Se fosse veramente quello il valore della variabile 'camera' non ci
sarebbero problemi:

   $ ipython3

   In [1]: import os

   In [2]: camera = "DigitalDigital HH"

   In [3]: os.path.exists(os.path.join('/tmp', camera))
   Out[3]: False

Per prima cosa aggiungerei nel try/except:

   import ipdb; ipdb.set_trace()

così sperimenti direttamente e ti fai un'idea chiara.
len(camera) ti restituisce 17 o la variabile ha qualche carattere non
rappresentato magari nella tua codifica? Prova con repr(camera)

L'istruzione va in eccezione anche nel debugger?

> except OSError:
> import ipdb; ipdb.set_trace()
> continue


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


[Python] uwsgi e problemi di import... da un giorno all'altro...

2018-03-26 Per discussione Alessandro Dentella


Buonasera a tutti,


la settimana scorsa mi sono successi 3 casi problematici di deploy di
applicazioni django con uwsgi identici e per me assolutamente
inspiegabili al momento. Gradirei molto lumi su come procedere per
indagare cosa sia la causa.


Nella stessa settimana 3 applicazioni django ancora con Python 2, che
stavano funzionando correttamente da mesi/anni su server Debian
jessie (2) e Ubuntu 16.04 (1) con uwsgi-emperor ad un reload di uwsgi
(touch del file .ini)  o al reboot accidentale del server (ubuntu)
hanno smesso di funzionare scrivendo nei log che non trovavano alcuni
pachetti (vedi sotto).

Nello stesso momento anche reinstallando il risultato era il medesimo,
mentre applicazioni con Python3 continuavano a funzionare e la
soluzione è stata di fare il porting a Python3.

In un caso ho un server di test dove funziona ancora la versione con
python2 ed ho analizzato con grande cura ogni dettaglio per capire le
differenze senza trovarle.

È facile pensare che ci sia stato un aggiornamento di software che ha
impattato negativamente ma ho verificato con meticolosità ogni cosa
che mi viene in mente ed inoltre django con il suo runserver funziona
senza problema (dj check, dj shell, dj runserver...), ho anche
verificato che il problema sussiste sia con uwsgi 2.0.7, 2.0.12 e 2.0.17

Scrivo di seguito il dettaglio della configurazione di uwsgi ed il
file django.wsgi che uso. La configurazione ha funzionato egregiamente
per tanti anni e sta funzionando per svariate decine di altri server.

Apprezzo qualunque suggerimento di analisi da provare. Non sapere cosa
succeda mi lascia molto sulle spine...

sandro
*:-)

Conf uwsgi
--

[uwsgi]

env = DJANGO_SETTINGS_MODULE=web.settings
env = HOME=/tmp
env = LC_ALL=it_IT.UTF-8
prj_dir = /home/www/www2015.xxx.it
wsgi-file = %(prj_dir)/bin/django.wsgi

socket = /var/run/uwsgi/extra.sock
pidfile = /var/run/uwsgi/extra.pid
socket-timeout = 200
buffer-size = 1
processes = 2
threads = 1
uid = www-data
gid = www-data

req-logger = file:/var/log/uwsgi/extra-access.log
logger = file:/var/log/uwsgi/extra-errors.log
touch-logreopen = /var/log/uwsgi/touch-logrotate
chmod-socket= 664
plugins = python,logfile



django.wsgi
---

#!/home/www/.base2/bin/python


import sys
sys.path[0:0] = [
  '/home/www/.buildout/eggs/Django-1.8.16-py2.7.egg',
  '/home/www/.buildout/eggs/ipython-2.4.1-py2.7.egg',
  '/home/www/.buildout/eggs/Sphinx-1.4.6-py2.7.egg',
  '/home/www/.buildout/eggs/nose-1.3.7-py2.7.egg',
  '/home/www/.buildout/eggs/ipdb-0.10.1-py2.7.egg',
  '/home/www/.buildout/eggs/ipdbplugin-1.4.5-py2.7.egg',
  '/home/www/.buildout/eggs/django_nose-1.4.4-py2.7.egg',
  '/home/www/.buildout/eggs/psycopg2-2.6.2-py2.7-linux-x86_64.egg',
  '/home/www/.buildout/eggs/django_debug_toolbar-1.5-py2.7.egg',
  '/home/www/.buildout/eggs/Werkzeug-0.11.11-py2.7.egg',
  '/home/www/.buildout/eggs/cloud_sptheme-1.7.1-py2.7.egg',

  ...

  '/home/www/.buildout/eggs/django_appconf-1.0.1-py2.7.egg',
  '/home/www/.buildout/eggs/contextlib2-0.5.4-py2.7.egg',
  '/home/www/.buildout/eggs/pytz-2016.6.1-py2.7.egg',
  '/home/www/.buildout/eggs/MarkupSafe-0.23-py2.7-linux-x86_64.egg',
  '/home/www/.buildout/eggs/PyYAML-3.12-py2.7-linux-x86_64.egg',
  '/home/www/.buildout/eggs/cssselect-0.9.2-py2.7.egg',
  '/home/www/.buildout/eggs/lxml-3.6.4-py2.7-linux-x86_64.egg',
  '/home/www/.buildout/eggs/python_dateutil-2.6.0-py2.7.egg',
  '/home/www/www2015.unicasim.it/web/apps',
  ]

import djangorecipe.binscripts

application = djangorecipe.binscripts.wsgi('web.settings', logfile='')

-
   interprete django (equivalente a manage.py) = quello che funziona
-


identico al precedente tranne per il finale:

if __name__ == '__main__':
sys.exit(djangorecipe.binscripts.manage('web.settings'))



--
il log dell'errore di uwsgi
--

Mon Mar 26 21:05:31 2018 - received message 0 from emperor
SIGINT/SIGQUIT received...killing workers...
worker 1 buried after 1 seconds
worker 2 buried after 1 seconds
goodbye to uWSGI.
*** Starting uWSGI 2.0.17 (64bit) on [Mon Mar 26 21:05:38 2018] ***
compiled with version: 4.9.2 on 26 March 2018 13:42:02
os: Linux-3.16.0-4-amd64 #1 SMP Debian 3.16.39-1 (2016-12-30)
nodename: template-web
machine: x86_64
clock source: unix
detected number of CPU cores: 1
current working directory: /etc/uwsgi-emperor/vassals-enabled
writing pidfile to /var/run/uwsgi/extra.pid
detected binary path: /usr/local/bin/uwsgi
!!! no internal routing support, rebuild with pcre support !!!
your processes number limit is 11962
your memory page size is 4096 bytes
detected max file descriptor number: 1024
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to UNIX address 

Re: [Python] ciao sono nuovo, ma si trova la documentazione ?

2018-02-27 Per discussione Alessandro Dentella
On Tue, Feb 27, 2018 at 06:20:14PM +0100, Iguana Igua wrote:
>  Se lo assegni ad un nome locale poi il tab ti mostra l'attributo
>  documentation.
>
>ok, ho capito.
>ma non ho capito la logica per arrivare al metodo. Facciamo le cose al
>contrario.
>Per esempio io voglio conoscere la descrizione di un pacchetto.
>So che il pacchetto è python2.7 e che lo trovo dentro la cache.
>Quindi:
>cache=apt.Cache()
>pkg=cache['python2.7']
>e da qui come arrivo a:
>pkg.version[0].description
>?
>cioè come faccio a trovare description ?
>

Senza avere visto cosa fa il tuo comando, credo che ti stia
suggerendo di fare:

>pkg.version[0].description

 pkg_version = pkg.version[0]

a questo punto, dentro ipython, puoi usare la tabulazione ed il '?' in
fondo per avere completamento ed informazioni.

Il meccanismo funziona se hai notazione puntata, ma non espande se hai un
un indice [].

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


Re: [Python] uwsgi 3.6 su Debian stretch

2018-02-22 Per discussione Alessandro Dentella

Ciao Paolo,

> Non conoscevo la guida che hai indicato per installare Python 3.6 su
> Debian Stretch.
>
> Alla fine ha funzionato tutto nel tuo caso ? Nel caso aggiornerei la mia 
> guida.

si, fermandosi all'output che usi come test. Non ho potuto verificare
poi l'applicazione reale (django) perché uso una wheel di
psycopg2 che mi sta dando problemi (ma indipendenti da uwsgi, li dà
anche da console)

> Potresti confermarmi che hai seguito questi passaggi ?
>
> $ sudo apt-get install python3.6 python3.6-dev \
> > uwsgi uwsgi-src uuid-dev libcap-dev libpcre3-dev
> $ cd ~
> $ export PYTHON=python3.6
> $ uwsgi --build-plugin "/usr/src/uwsgi/plugins/python python36"
> $ sudo mv python36_plugin.so /usr/lib/uwsgi/plugins/python36_plugin.so
> $ sudo chmod 644 /usr/lib/uwsgi/plugins/python36_plugin.so
>
> E se tutto funziona potresti incollarmi il risultato del comando

Confermo tutto, ecco l'output:

   root@thux-suite:~# uwsgi --plugin python36 -s :0
   *** Starting uWSGI 2.0.14-debian (64bit) on [Thu Feb 22 08:12:54 2018] ***
   compiled with version: 6.2.1 20161124 on 07 December 2016 16:14:59
   os: Linux-4.9.0-5-amd64 #1 SMP Debian 4.9.65-3+deb9u2 (2018-01-04)
   nodename: thux-suite
   machine: x86_64
   clock source: unix
   pcre jit disabled
   detected number of CPU cores: 2
   current working directory: /root
   detected binary path: /usr/bin/uwsgi-core
   uWSGI running as root, you can use --uid/--gid/--chroot options
   *** WARNING: you are running uWSGI as root !!! (use the --uid flag) ***
   *** WARNING: you are running uWSGI without its master process manager ***
   your processes number limit is 23773
   your memory page size is 4096 bytes
   detected max file descriptor number: 1024
   lock engine: pthread robust mutexes
   thunder lock: disabled (you can enable it with --thunder-lock)
   uwsgi socket 0 bound to TCP address :38685 (port auto-assigned) fd 3
   Python version: 3.6.3 (default, Nov 24 2017, 00:15:12)  [GCC 6.3.0 20170516]
   *** Python threads support is disabled. You can enable it with 
--enable-threads ***
   Python main interpreter initialized at 0x557217132ad0
   your server socket listen backlog is limited to 100 connections
   your mercy for graceful operations on workers is 60 seconds
   mapped 72768 bytes (71 KB) for 1 cores
   *** Operational MODE: single process ***
   *** no app loaded. going in full dynamic mode ***
   *** uWSGI is running in multiple interpreter mode ***
   spawned uWSGI worker 1 (and the only) (pid: 6279, cores: 1)


Grazie a te per la guida!


--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti

http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] uwsgi 3.6 su Debian stretch

2018-02-21 Per discussione Alessandro Dentella
Ciao Paolo,

Grazie, ho risolto, sotto lo spiego...

On Wed, Feb 21, 2018 at 05:44:28PM +0100, Paolo Melchiorre wrote:
> 2018-02-21 17:28 GMT+01:00 Alessandro Dentella <san...@e-den.it>:
> > vorrei passare alla 3.6 in produzione dove uso uwsgi (+ nginx) su
> > debian stretch.
> >
> > Pensavo di potere adattare i suggerimenti di Paolo Melchiorre [1] per
> > Ubuntu, ma ho dei problemi... in realtà vedo che i problemi ci sono
> > ancora prima di compilare uwsgi... il modo di testare la versione di
> > Python di un plugin che lui suggerisce è:
> >
> >uwsgi --plugin python36 -s :0
> >
> > che mi funziona su ubuntu ma non su Debian, non trova mai
> > il plugin (anche se poi funziona nel setup reale)::
> >
> >   root@thux-dev-stretch:~# uwsgi --plugin python3 -s :0
> >   open("./python3_plugin.so"): No such file or directory [core/utils.c line 
> > 3686]
> >   !!! UNABLE to load uWSGI plugin: ./python3_plugin.so: cannot open shared 
> > object file: No such file or directory !!!
> >
> > Qual'è il modo corretto di testare quale interprete usa e qual'è il
> > modo corretto di generare un plugin per uwsgi + python3.6  su debian
> > stretch?
> > [1] 
> > http://www.paulox.net/2017/04/04/how-to-use-uwsgi-with-python3-6-in-ubuntu/
>
> Ciao Alessandro,
>
> La guida che ho scritto credo sia specifico per Ubuntu che nelle
> versioni 16.10 e 17.04 ha avuto in contemporanea python 3.5 di default
> e python 3.6 opzionale. In questo contesto il plugin python3 era
> compilato con python3.5 e quindi ho dovuto installare python3.6 (come
> descritto nella guida) e poi compilare un plugin apposito.
>
> Come puoi vedere per Ubuntu esiste il pacchetto python3.6
> https://packages.ubuntu.com/search?suite=all=names=python3.6
> mentre non esiste per Debian
> https://packages.debian.org/search?suite=stable=all=any=names=python3.6
>
> Le alternative che hai per usare uwsgi e python3.6 mi sembrano 2:
> - aggiornare a Debian Buster che ha python3.6
> https://packages.debian.org/buster/python3
> - installare python3.6 su Debian Stretch diversamente, ma in questo la
> mia guida poi non credo ti sarà troppo utile


Python3.6 l'ho installato da qui [1] e con quello installato la tua
guida funziona correttamente.

Il mio problema era che avevo un uwsgi installato a mano (penso per
errore, non me ne ricordavo), quindi non vedeva i plugin ma da riga di
comando prevaleva sul path di quello ufficiale che invece veniva
utilizzato (correttamente) da uwsgi-emperors

Ora sono in una situazione in cui ho i pacchetti che indichi nel post
e sono riuscito a compilarlo ed il test che hai indicato funziona e
mostra che sto usando Python 3.6.3.

Immagino che ora mi funzioni, vado a provare...

sandro




[1] https://github.com/chriskuehl/python3.6-debian-stretch
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] uwsgi 3.6 su Debian stretch

2018-02-21 Per discussione Alessandro Dentella

Ciao,


vorrei passare alla 3.6 in produzione dove uso uwsgi (+ nginx) su
debian stretch.

Pensavo di potere adattare i suggerimenti di Paolo Melchiorre [1] per
Ubuntu, ma ho dei problemi... in realtà vedo che i problemi ci sono
ancora prima di compilare uwsgi... il modo di testare la versione di
Python di un plugin che lui suggerisce è:


   uwsgi --plugin python36 -s :0


che mi funziona su ubuntu ma non su Debian, non trova mai
il plugin (anche se poi funziona nel setup reale)::

  root@thux-dev-stretch:~# uwsgi --plugin python3 -s :0
  open("./python3_plugin.so"): No such file or directory [core/utils.c line 
3686]
  !!! UNABLE to load uWSGI plugin: ./python3_plugin.so: cannot open shared 
object file: No such file or directory !!!

Qual'è il modo corretto di testare quale interprete usa e qual'è il
modo corretto di generare un plugin per uwsgi + python3.6  su debian
stretch?

sandro
*:-)




[1] http://www.paulox.net/2017/04/04/how-to-use-uwsgi-with-python3-6-in-ubuntu/
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] threading, local() and uwsgi: how protected is local()? - RITENTO

2017-12-13 Per discussione Alessandro Dentella
Ciao Marco,


grazie per la risposta e l'attenzione.

> > al lavoro abbiamo avuto una interessante discussione su un modo di
> > tenere in Django una informazione sempre disponibile (request / user e
> > recentemente un 'dominio').
> >
> > Una soluzione a volte considerata "da evitare" ma che ci è sempre
> > andata bene è stata fatta seguendo un vecchio snippet di Django [2 -
> inizio]
> > che immagazzina i dati in threading local().
> >
> > Quello che mi ha fatto balzare sulla sedia ieri è che un collega mi ha
> > mostrato un post [1] su StackOverflow dove si dice che uwsgi non
> > garantisce che quello che si mette in local() non sia condiviso fra
> > thread differenti... nonostante la documentazione Python dica:
> >
> >Thread-local data are data whose values are thread specific
> >
> >
> > In una pagina citata in questo post [2] si espone una situazione molto
> > simile alla mia, ma non vedo una risposta soddisfacente sul fatto che
> > sia in effetti vero
> >
> >   * che uwsgi forza un uso condiviso della ram fra thread differenti e
> >   * se esiste un modo per bypassarlo
> >
> > io ho spesso in uwsgi.ini (ma ho anche occasionalmente di più):
> >
> >   threads: 1
> >   processors: 2
> >
> > È questo che mi ha salvato fino ad oggi?
> >
> >
> > sandro
> > *:-)
> >
> >
> > PS: tecnicamente io scrivo nel _thread_local tramite middleware ad
> > ogni request, non esiste possibilità che resti il vecchio nella
> > nuova request
>
>
> Ciao Alessandro,
>
> incuriosito dalla tua domanda e partaggiando il tuo stesso stupore ho
> fatto qualche ricerca.
>
> Prima di tutto vorrei iniziare dicendo che faccio piu' confidenza al
> gruppo di unbit piuttosto che al commento di qualcuno in un sito. Mi
> sembrava di aver letto nella documentazione di uWSGI che l'obiettivo
> principale di uWSGI sia la correttezza, le performance vengono dopo.
> Ovviamente non ritrovo la frase in questione ma che cambino la semantica
> di threading.local per ragioni di performance mi sembra un suicidio. Se
> fai un veloce grep nel codice di Django ti accorgerai che Django stesso
> usa local() internamente.
>
> Per scrupolo ho fatto una piccola ricerca nei sorgenti di uWSGI e non
> trovo conferma di una simile castroneria.
>
> Sono gia' bloccato, non so' piu' come continuare. Sono stati portati
> esempi concreti a supporto della tesi? No.
>
> Allego due file di test e come puoi verificare e threading.local
> funziona esattamente come ci si aspetterebbe.


Avendo sollecitato Roberto De Ioris anche in privato, mi ha in effetti
risposto:

Ciao, di solito si usano i thread local per avere dati
NON-condivisi tra i thread. Se e' il tuo caso, allora puoi usarli
senza problemi a patto che abiliti il GIL in uWSGI con
--enable-threads.

Va da sè che se non abilito --enable-threads, problema non ne ho,
visto che non uso threads... e --threads imploca --enable-threads.



> In realta' e' l'altro risultato che mi lascia dei dubbi, quando
> threading.local non e' usato.

Qui ti ho perso... quale sarebbe "l'altro risultato"?



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


[Python] threading, local() and uwsgi: how protected is local()? - RITENTO

2017-12-07 Per discussione Alessandro Dentella
***
Rimando nella speranza che qualcuno legga e desideri e magari stia
cercando di combattere la noia...
***

Ciao,

[disclaimer: si parla di Django ma il tema mi pare più generale poi si
parla di uwsgi e mi pare che Roberto qui legga...]

al lavoro abbiamo avuto una interessante discussione su un modo di
tenere in Django una informazione sempre disponibile (request / user e
recentemente un 'dominio').

Una soluzione a volte considerata "da evitare" ma che ci è sempre
andata bene è stata fatta seguendo un vecchio snippet di Django [2 - inizio]
che immagazzina i dati in threading local().

Quello che mi ha fatto balzare sulla sedia ieri è che un collega mi ha
mostrato un post [1] su StackOverflow dove si dice che uwsgi non
garantisce che quello che si mette in local() non sia condiviso fra
thread differenti... nonostante la documentazione Python dica:

   Thread-local data are data whose values are thread specific


In una pagina citata in questo post [2] si espone una situazione molto
simile alla mia, ma non vedo una risposta soddisfacente sul fatto che
sia in effetti vero

  * che uwsgi forza un uso condiviso della ram fra thread differenti e
  * se esiste un modo per bypassarlo

io ho spesso in uwsgi.ini (ma ho anche occasionalmente di più):

  threads: 1
  processors: 2

È questo che mi ha salvato fino ad oggi?


sandro
*:-)


PS: tecnicamente io scrivo nel _thread_local tramite middleware ad
ogni request, non esiste possibilità che resti il vecchio nella
nuova request

[1] 
https://stackoverflow.com/questions/3227180/why-is-using-thread-locals-in-django-bad
[2] https://www.pythonanywhere.com/forums/topic/710/
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


[Python] threading, local() and uwsgi: how protected is local()?

2017-12-05 Per discussione Alessandro Dentella


Ciao,

[disclaimer: si parla di Django ma il tema mi pare più generale poi si
parla di uwsgi e mi pare che Roberto qui legga...]

al lavoro abbiamo avuto una interessante discussione su un modo di
tenere in Django una informazione sempre disponibile (request / user e
recentemente un 'dominio').

Una soluzione a volte considerata "da evitare" ma che ci è sempre
andata bene è stata fatta seguendo un vecchio snippet di Django [2 - inizio]
che immagazzina i dati in threading local().

Quello che mi ha fatto balzare sulla sedia ieri è che un collega mi ha
mostrato un post [1] su StackOverflow dove si dice che uwsgi non
garantisce che quello che si mette in local() non sia condiviso fra
thread differenti... nonostante la documentazione Python dica:

   Thread-local data are data whose values are thread specific


In una pagina citata in questo post [2] si espone una situazione molto
simile alla mia, ma non vedo una risposta soddisfacente sul fatto che
sia in effetti vero

  * che uwsgi forza un uso condiviso della ram fra thread differenti e
  * se esiste un modo per bypassarlo

io ho spesso in uwsgi.ini (ma ho anche occasionalmente di più):

  threads: 1
  processors: 2

È questo che mi ha salvato fino ad oggi?


sandro
*:-)


PS: tecnicamente io scrivo nel _thread_local tramite middleware ad
ogni request, non esiste possibilità che resti il vecchio nella
nuova request

[1] 
https://stackoverflow.com/questions/3227180/why-is-using-thread-locals-in-django-bad
[2] https://www.pythonanywhere.com/forums/topic/710/
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] R: Packt Free Learning of the Day

2017-08-28 Per discussione Alessandro Dentella
On Mon, Aug 28, 2017 at 04:20:16PM +0200, Carlos Catucci wrote:
>  ma di fatto sto violando i loro termini. In
> > allegato, riporto lo screenshot della conversazione (avvenuta sulla
> > pagina Facebook di Packt)
>
> E' solo che non ha nessuna logica. Potrei capire se dicessero: puoi
> scambiarli SOLO con latre persone registrate al servizio.
> Sara' una mia deforazione professionale ma lo trovo illogico. Tutto qui.


Io lo trovo perfettamente logico. Fra le cose per cui mi pare logico
c'è il fatto che abbiano voglia di tenere traccia di cosa viene letto
e preferito. Potrebbero anche avere un accordo con l'autore per cui se
il libro viene molto apprezzato (=scaricato) gli riconoscono qualcosa
anche se scaricato gratuitamente.

Se mettono un libro in dowload gratuto possono comunque trarre
beneficio dal fatto che il sito viene visitato, che raccolgono
informazioni e la tua mail, che profilano le cose che ti interessano e
quindi ti riempiranno di promozioni per i secoli dei secoli (nulla
viene fatto solo per la tua gioia, e non lo dico in modo critico),
quindi è perfettamente logoco che lo scambio non sia accettabile dal
punto di vista del marketing che è l'unica cosa che spinge a metterlo
a disposizione gratuitamente.

Il fatto che le copie siano facilmente replicabili non c'entra
nulla. Anche le fotocopie hanno un costo zero per l'editore, questo
non le rende per questo legali...

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


Re: [Python] OT - Macchina Virtuale su Cloud

2017-07-27 Per discussione Alessandro Dentella
On Thu, Jul 27, 2017 at 12:17:56AM +0200, Christian Barra wrote:
> Hello,
>
> > On 27 Jul 2017, at 00:09, Mirko Benedetti  wrote:
> >
> > Ammettiamo che acquisti una macchina virtuale in cloud, presso un provider 
> > come 1&1 o Aruba, per fare dei test credo che siano sufficienti, se dovessi 
> > spedire una mail da questo server, dovrei mettere su un server di posta 
> > smtp, oppure che voi sappiate ci si può appoggiare su un server 
> > dell'hoster, esistono hoster che lo fanno, si può fare?
>
> Prova Digital Ocean o Vultr (non ho idea di quanto siano macchinosi 1&1 e 
> Aruba).
>
> Per l’email puoi utilizzare servizi come mailgun o altri (devi avere un 
> dominio).

io da anni uso con grande soddistazione Contabo [1]. Sono tedeschi e sono
imbattibili nel prezzo: 8 core + 12 GB RAM + 300 GB SSD a 9 Euro/mese.

Per la posta uso invece sparkpost [2]: 100.000 mail al mese gratuite!
Servizio impeccabile ed istantaneo. Fanno anche rendering dei template.

sandro


[1] http://www.contabo.com/?show=vps
[2] http://sparkpost.com/





--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Print con end=""

2017-06-15 Per discussione Alessandro Dentella
On Fri, Jun 09, 2017 at 11:56:01PM +0200, Gabriele Battaglia wrote:
>Buona sera.
>
>Per impedire l’andata a capo del cursore, dopo aver visualizzato
>qualcosa in console con print, da python 2 io facevo così:
>
>senza la __future__ print
>
>print “Qualcosa”,
>
>print “ qualcos’altro”
>
>Con la funzione importata dal module __future__
>
>print(“qualcosa”,end=“”)
>
>print(“ qualcos’altro”)
>
>Da Python 3 invece, il secondo metodo, che mi aspettavo funzionasse,
>non va e mi ritorna un errore di sintassi.

A me no (sempre in py3):

   In [2]: print("oky doc", end="")
   oky doc
   In [3]: print("qualcos'altro")
   qualcos'altro


Gli apici al contrario che hai sono stati messi nel copia ed incolla o
ce li hai nel codice?


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


Re: [Python] Python e Emacs

2017-04-25 Per discussione Alessandro Dentella
On Sat, Apr 22, 2017 at 10:41:27PM +0200, Fundor333 wrote:
>Grazie ai vostri suggerimenti e alcuni consigli ricevuti al Pycon ho
>iniziato a usare pesantemente Emacs come editor per Python (e tutto il
>resto).
>
>Avete qualche pacchetto da consigliare per lo sviluppo di codice
>Python? Per ora le mie configurazioni di Emacs sono disponibili al link
>[1]https://github.com/fundor333/emacs.d e spero di poterle espanderle
>per essere più produttivo

mi pare una configurazione ancora molto minimalista...
Come già suggerito in passato, io mi trovo molto bene con helm e
helm-projectile che hanno una bellissima documentazione di tutto
quello che possono fare:

   http://tuhdo.github.io/helm-projectile.html

per il completamento uso jedi

   https://github.com/tkf/emacs-jedi

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


[Python] interfacciarsi ad api dns/domini aruba da python

2017-02-01 Per discussione Alessandro Dentella

Buongiorno,

per errore ho inviato questa mail alla lista django, vediamo se qui ho
più fortuna...

qualcuno ha degli esempi Python per interfacciarsi alle api aruba [1].
È pubblicizzata anche una versione rest [2] (con tanto di libreria
Python [2]) ma mi pare limitata alla creazione delle VM.

Mi piacerebbe usare gandi.net che documenta bene anche in Python ma i
prezzi dei domini .it su gandi.net sono sempre maggiori e mai
scontati...


sandro



[1] http://kb.cloud.it/api/domini-e-dns.aspx
[2] http://kb.cloud.it/sviluppatori/api-rest/api-rest.aspx
[3] https://github.com/Arubacloud/pyArubaCloud


--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Help me with PG JSON e Django

2016-12-27 Per discussione Alessandro Dentella
On Tue, Dec 27, 2016 at 10:03:59PM +0100, Carlos Catucci wrote:
> Secondo il manuale di Django, versione 1.9, si possono definire,
> previa importazione dellì'apposito contrib (from
> django.contrib.postgres.fields import JSONField) dei campi json in una
> tabella.
> Ed in effetti la creazione (Blocks.objects.create()) funziona benissimo.
> I dolori vengono al momento di recuperare di dati immagazzinati in
> questa struttura JSON.
> A sentire il manuale sarebeb tutto semplice e pulito
>
> Dog.objects.filter(data__breed='collie')
>
> oppure per casi complessi
>
> Dog.objects.filter(data__contains={'owner': 'Bob'})
>
> Peccato che pur provando e riprovando i dati non vengno recuperati mai.
>
> La struttura del model e' la seguente:
>
> class Blocks(models.Model):
> agency = models.ForeignKey("users.Agencies")
> agency_code = models.CharField(max_length=30)
> rent_sale = models.CharField(max_length=1,choices=RENT_SALE)
> search_offer = models.CharField(max_length=1,choices=SEARCH_OFFER)
> block_type = models.CharField(max_length=100)
> location = models.CharField(max_length=200)
> customer_price = models.FloatField(default=0.0)
> agency_price = models.FloatField(default=0.0)
> details = JSONField()
> active = models.BooleanField(default=True)
> deleted = models.BooleanField(default=False)
>
> Questo un esempio di inserimento
>
> Blocks.objects.create(agency_id=1,agency_code='C0001',rent_sale='1',search_offer='2',block_type='appartamento',location='pescara',customer_price=10.0,agency_price=8.0,
> active='t',deleted='f',details= {'block_details': [{"details": {"mp":
> "M", "mq": "80:", "qta": "2:"}, "attribute": "camera da letto"},
> {"details": {"mp": "M", "mq": "80:", "qta": "2:"}, "attribute":
> "camera da letto"}, {"details": {"mp": "M", "qta": "1:"}, "attribute":
> "bagno"}, {"details": {"mp": "P", "yn": "Y:"}, "attribute": "posto
> auto"}, {"details": {"mp": "M", "yn": "Y:"}, "attribute":
> "ascensore"}]})
>
> Ma se eseguo una query tipo
>
> Blocks.objects.filter(details__contains={'attribute': 'bagno'})
>
> ottengo indietro una lista vuota ( [] )

io confermo che questa sintassi per me funziona. Ho un caso analogo
dove i dati sono:

   {"display_name": "Salvatore Z...", "activate_url":
   "https://trepalchi.it/accounts/.../;,
   "current_site": "trepalchi.it",
   "subject": "Salvatore Z... conferma la tua email per entrare nel
   portale Trepalchi.it", }

In [1]: 
models.Transmission.objects.filter(substitution_data__contains={'display_name': 
'Salvatore Z...'})
Out[1]: ]>

Posso suggerirti di controllare:

* cosa hai veramente nel db
* se da prompt di pg tutto funziona (a me la parte saliente del WHERE
 è:

 WHERE "marketing_transmission"."substitution_data" @>
 '{"display_name": "Salvatore Z..."}'

Ricordo che all'inizio avevo problemi nell'inserimento e mi finivano
dentro nel valore del campo delle graffe controbarrate. Era un
problema di interfaccia (admin), non di ORM a memoria.


sandro
*:-)



--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Scelta dell'ide al volo

2016-12-03 Per discussione Alessandro Dentella
On Sat, Dec 03, 2016 at 09:28:37AM +0100, Francesco Pischedda wrote:
> >
> > Fra le cose che io apprezzo maggiornamente e di emacs c'è, oltre a
> > questa modalità la visione a libro dei file. Ovvero la possibilità di
> > dividere in due la finestra e vedere nella seconda metà la
> > continuazione della prima. Ho un colpo d'occhio del codice o della
> > mail che scrivo che mi aiuta molto.
> >
>
> Questa feature è molto interessante, dove posso trovare riferimenti su come
> abilitarla/usarla?


  https://www.emacswiki.org/emacs/FollowMode

io l'ho abilitata con il tasto F12 con questa riga di configurazione:

  (global-set-key [f12] 'follow-delete-other-windows-and-split)

Altre feature che apprezzo molto e che sono molto più standard in
tanti editor è la modalità fold e outline per comprimere ed espandere
rispetto a dei pattern, ad esempio di un modulo python mi piace vedere
solo la definizione delle classi o solo la definizione di classi e
metodi. Mi permettte nuovamente di avere un colpo d'occhio immediato
(che poi unisco alla paginazione a libro)

  https://www.emacswiki.org/emacs/OutlineMode
  https://www.gnu.org/software/emacs/manual/html_node/emacs/Outline-Mode.html
  https://www.gnu.org/software/emacs/manual/html_node/emacs/Foldout.html


ma come ho già detto in altra mail, il salto a helm-projectile che ho
fatto solo l'estate scorsa è stato determinante.

>
> Ormai Emacs (nello specifico Spacemacs + Evil mode) è il mio IDE quotidiano
> anche se non riesco a vivere senza Vim quando mi trovo a lavorare su server
> via ssh;


Cosa ha vim che non ha emacs quando lavori via ssh? curiosità, non polemica...

sandro


--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Scelta dell'ide al volo

2016-12-03 Per discussione Alessandro Dentella
On Fri, Dec 02, 2016 at 12:22:13PM +0100, Fundor333 wrote:
>
> >Proprio per questo io uso in modalità server + client. Il server
> >carica in circa 3-4 secondi, quando entro nel mio desktop (circa 1
> >volta al mese) poi ogni singolo file apre in un tempo così ridicolo
> >che io non avverto il minimo ritardo (ovvero << 1 secondo). A questo
> >punto ho completamento e correzione in python rispetto ad un
> >virtualenv di mia scelta.

> Questa cosa mi interessa molto... Cos'è questa cosa di server+client? Io
> sono un informatico giovane, entrato nel mondo informatico assieme a Windows
> vista per cui questa cosa è nuova ed interessante per me

Emacs ha internamente un server che sia avvia con il comando
:server-start. A questo punto è possibile agganciarsi con il comando
emacsclient che apre un nuovo frame (window). Siccome
l'inizializzazione è stata già fatta dal server non hai tempi
aggiuntivi.

Non è diverso da quello che succede quando apri un nuovo tab in un
progetto con un ide normale, solo che:

 * non sei limitato a quel progetto
 * non sei fisicamente dentro la stessa finestra
 * condividi lo stesso yank-rink (circa lo stesso ciclo cut & paste)
   quindi uoi prender cose da un file e incollarle nell'altro sempre
   senza usare il mouse

Più tardi vedo di passareti una configurazione funzionante così puoi
testare diretttamente.



Fra le cose che io apprezzo maggiornamente e di emacs c'è, oltre a
questa modalità la visione a libro dei file. Ovvero la possibilità di
dividere in due la finestra e vedere nella seconda metà la
continuazione della prima. Ho un colpo d'occhio del codice o della
mail che scrivo che mi aiuta molto.

Non ho mai visto questo in un altro editor (a parte libreoffice per i
documenti). Quando dico "visto", mi sono limitato a chiedere a persone
che utilizzato altri strumenti se ce l'hanno e nessuno ne era a conoscenza...

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


Re: [Python] Scelta dell'ide al volo

2016-12-01 Per discussione Alessandro Dentella
Ciao Carlo!

> > Non facciamo disinformazione, per cortesia.
>
> Woah woah, calma. Stavo solo trollando, ok? :P

io riconosco la tua ironia, ma poi rimane questa sensazione... anche
perché è una bufala che gira da sempre. Ma non mi ero accorto che il
tono risultasse particolarmente rude e non era intenzione...

> > Per considerarlo lento lo devi avere provato su un 386...
>
> In effetti era un 386SX del 1989, e con molta meno RAM degli 8MB
> necessari per farlo girare fluidamente (Eight Megabytes And Constantly
> Swapping ;)


8MB per un 386sx mi pare che fossero tanti (ma ho scarsa
memoria). credo che negli anni '90 il mio laptop sul quale usavo
regolarmente emacs fosse un 486 con 8MB di RAM...

sandro
*:-)



--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Scelta dell'ide al volo

2016-12-01 Per discussione Alessandro Dentella
On Thu, Dec 01, 2016 at 05:19:41PM +0100, Carlo Miron wrote:
> 2016-12-01 17:17 GMT+01:00 Francesco Maida :
>
> > Se proprio vogliamo fare l'elenco degli editor e degli IDE io butto nella
> > mischia Visual Studio Code, che secondo me con il plugin per Python è
> > un'editor decente. Non ho provato mai a scriverci niente di più complesso di
> > uno script di 50 righe, ma mi sembrava buono e più reattivo rispetto a suo
> > "cuggino" Atom (entrambi sono basati sul framework Electron).
>
> Ed entrambi più lenti di emacs, che già di suo era l'ide piùllento del mondo. 
> :P

Non facciamo disinformazione, per cortesia.
Per considerarlo lento lo devi avere provato su un 386...

Lo stai confrontando con un ide o con un editor?
Lo stai confrontando in configurazione da ide o da editor?

Se ti interessa solo un editor, pur ricco, si apre istantaneamente.
Se lo stai usando come ide, lo hai arricchito di tutte le librerie
aggiuntive che ti piacciono allora puoi accorgerti che sta aprendo un
file  e caricando un progetto.

Proprio per questo io uso in modalità server + client. Il server
carica in circa 3-4 secondi, quando entro nel mio desktop (circa 1
volta al mese) poi ogni singolo file apre in un tempo così ridicolo
che io non avverto il minimo ritardo (ovvero << 1 secondo). A questo
punto ho completamento e correzione in python rispetto ad un
virtualenv di mia scelta.

Questo NON è il suo punto di debolezza. La debolezza è semmai che per
configurarlo bene può veramente servire molto tempo.

Io non riesco ad abituarmi ad altri strumenti in particolare ad
esempio il diff ed il merge sono molto più potenti dei vari k3diff e
merge anche se il colpo d'occhio di k3diff e melde per il diff di
directory ha un suo valore che non hai in emacs. Il fatto che offra la
quasi totalità delle sue funzionalità anche nel terminale poi non ha
paragoni con altri ide (ma mi immagino che vim sia analogo)

Comprendo parecchi limiti di emacs per chi fosse abituato a ide più
moderni, non citatemi però la velocità.

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


Re: [Python] Scelta dell'ide al volo

2016-12-01 Per discussione Alessandro Dentella
On Thu, Dec 01, 2016 at 12:02:23PM +0100, Francesco Barresi wrote:
> Per me dipende da cosa devo fare...
>
> VIM per modifiche veloci.
> VIM per lavori più lunghi.
> VIM per prendere appunti.
> VIM formattare csv.
> VIM for all.
>
> E questione di gusti :-)


so di essere in minoranza ma non posso esimermi dal replicare che

emacs per modifiche veloci.
emacs per lavori più lunghi.
emacs per prendere appunti.
emacs formattare csv.
emacs per le mail
emacs per fare merge
emacs...

Purtroppo ha una curva di apprendimento faticosa e una configurazione
talmente potente da essere difficile, ma una volta messo a punto è a
mio parere potentissimo.

io uso emacs con projectile e help, se ci fossero curiosi...


sandro
*:-)



--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [python] Conoscete un web hosting a poc oprezzo?

2016-05-15 Per discussione Alessandro Dentella
On Sun, May 15, 2016 at 07:35:55PM +0900, Christian Barra wrote:
>Tutti i cloud providers partono più o meno da 5 euro al mese per una
>macchina base

Contabo [1] come maccihna base offre a 7.99 Euro 2 cpu i7 e 8 MB di RAM
e 500 GB di hd. che mi pare abbastanza imbattibile. Io mi ci trovo
molto bene.

  https://contabo.com/?show=vps

In aggiunta chi ha un account da loro ha diritto al DNS per tutti i
domini che vuole. Ad esempio riesco con il loro DNS a gestire i campi
SPF e TXT che aruba non mi permette di gestire dalla loro interfaccia
anche per domini comprati da aruba.


sandro
*:-)

--
Sandro Dentella  *:-)
http://trepalchi.itIl portale degli artisti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] [Meta-lista] Messaggi in solo testo

2016-05-06 Per discussione Alessandro Dentella
On Fri, May 06, 2016 at 11:04:59AM +0200, Andrea D'Amore wrote:
> 2016-05-06 10:49 GMT+02:00 Carlos Catucci :
> > Ecco il problema che scatenato piu flame war di ogni altro e' che gli
> > emoticon non sono sufficienti spesso a veicolare il tono della frase.
>
> Basta non buttarci altro combustibile.
>
> > La GIF Animata sara' graditissima da chi, come FInelli, usa Mutt ;)
>
> Che uomo, io ancora non mi sono deciso a passare a mutt e notmuch. La
> vergognosa verità è che ho paura di dover imparare nuove scorciatoie o
> peggio ancora di dover mappare quelle esistenti per essere vim-like.

uso mutt da sempre, ne sono contento e non riesco ad abituarmi ad altro.
Odio le email html *più* che il top posting.

A volte il rendering è comprensibile a volte non capisci neanche la
differenza fra testo riportato e testo originale...

Un buon uso del plain-text sarebbe molto apprezzato...


sandro
*:-)


--
Sandro Dentella
http://trepalchi.itil nuovo portale degli artisti
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] pgsql2shp + zip + cgi + download ... bad header

2016-04-03 Per discussione Alessandro Dentella
On Sat, Apr 02, 2016 at 11:38:43PM +0200, Giuseppe Naponiello wrote:
>Lo script crea i vari file, crea l'archivio zip e pulisce la cartella
>dai file creati lasciando solo lo zip...il problema arriva al download:
>nell'error.log di apache leggo "malformed header from script 'test.py':
>Bad header: Initializing..."
>L'errore sparisce e il download va a buon fine se dallo script elimino
>le funzioni per la creazione degli shapefile!!!
>Per creare gli shp utilizzo pgsql2shp e credo il problema stia nel
>fatto che il comando pgsql2shp produce output:
>"Initializing...
>Done (postgis major version: 2).
>Output shape: MultiPoint
>...
>Secondo voi è corretto pensare che il problema sia l'output prodotto da
>pgsql2shp, se si come eliminare l'errore? Nella documentazione non c'è
>nessuna opzione che permetta di non stampare output.
>Magari esiste un'altra strada per ottenere lo stesso risultato?

Mi pare corretto pensarlo. Tu come catturi l'output di pgsql2shp? io
non ho mai lavorato con i gis quindi rispondo solo a buon senso. Mi
immagino che l'output di pgsql2shp sia diviso in 2 handler differenti,
quindi debba essere possibile catturare solo lo std output e non lo
std error. In alternativa, visto che le opzioni ti permettono di
nminare il file di output (-f) immagno che quello non abbia la scritta
Initializing e quindi tu possa poi riprenderlo da li.

sandro
*:-)


--
Sandro Dentella  *:-)
http://trepalchi.itIl nuovo portale degli artisti!
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Lettere accentate con tastiera en_US (era: Re: [OT] Mail di Enrico Bianchi in spam)

2016-03-15 Per discussione Alessandro Dentella
On Tue, Mar 15, 2016 at 10:33:54AM +0100, Nicola Larosa wrote:
> >> Massimiliano Modena wrote:
> >>> OT nell' OT: con la tastiera layout en_US come faccio le lettere
> >>> accentate?
>
> > Nicola Larosa wrote:
> >> Se hai Ubuntu usa la tastiera:
> >>
> >> "Italian (US keyboard with Italian letters)"
>
> Marco Beri wrote:
> > Tutta la vita compose key.

concordo

> >
> >  CCCP -> ☭

> >  <3 -> ♥
> >  c, -> ç
> >  C= -> €
> >  E' -> É
> >  E` -> È
> >  (10) -> ⑩
>
> Mi sarà utile per Duolingo, grazie. Molto versatile, ma con dei difetti:
>
> - facile produrre per errore lettere non esistenti nella lingua italiana
>   (solo la "e" ha entrambi gli accenti acuto e grave, le altre vocali
>   hanno solo quello grave);

nella tastiera ci sono molti altri tasti che se schiacciati a muzzo
danno parole inesistenti... ;-*

capita poi di scrivere in altre lingue, non cambio layout apposta per
scrivere in tedesco o in francese.

Poi emacs mi fa l'autocomposizione che è ancora più comoda lettera-accento
diventano lettera accentata se sei in text-mode...

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


Re: [Python] Riflessioni su anni e compensi (was Pythonista wanted a Pisa)

2016-02-06 Per discussione Alessandro Dentella
On Sat, Feb 06, 2016 at 02:05:41PM +0100, Carlos Catucci wrote:
>giovani (allo stesso costo o quasi). Il che non e' male in se, se fai
>come un mio amico che ha preso su un ragazzo a cui fa fare tutta la
>formazione e che intende tenere in azienda, facendolo crescere. Ma
>quanti sono cosi' intelligenti? La massa vuole il giovane per pagarlo
>poco e poi quando e' diventato bravo lo manda via perche' poi costa e
>prende un'altro inesperto.


Il cliente intelligente capisce benissimo il vantaggio di una persona
con la giusta esperienza. Ed alla persona capace ed esperta non serve
mettersi in competizione con i lavori delle persone appena formate. Vi
sono molti ruoli dove è proprio necessaria esperienza e
competenza. Una persona brava e capace vale molto più di 2 persone
inesperte che non hanno una visione di lungo respiro.

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


[Python] suds ed autenticazione https

2015-08-25 Per discussione Alessandro Dentella

Ciao a tutti,

ho un problema per il quale ho (quasi) esaurito la fantasia
investigativa...

Ho una pacchetto  che si connette al servizio delle poste per inviare
raccomandate soap usando suds.

Il pacchetta funziona correttamente su una vecchia Debian Lenny che
ora sto sostituendo con una Debian Jessie. Nel passaggio non riesco
più a fare funzionare l'autenticazione sul server soap che è in https.

Nel debug ho preso solo la porzione di codice che si connette al
servizio e che dovrebbe fare il download del wsdl, ho creato un minimo
virtualenv sulla macchina di produzione attuale (quella che funziona)
*usando esattamente la stessa cartella come sorgente di suds* e su una
serie di altre macchine (Deebian Lenny e Jessie). SOLO su quella di
produzione passo la basic authentication.

Se provo con wget passo l'autenticazione su qualunque macchina, questo
per eliminare il dubbio che esista un controllo sull'IP.

Ad ogni cambio macchina elimino i *pyc visto che le versioni di
Python sono differenti.


L'errore che ricevo è immancabilmente:

   htmlhead
   title401 Authorization Required/title
   /headbody
   h1Authorization Required/h1
   pThis server could not verify that you
   are authorized to access the document
   requested.  Either you supplied the wrong
   credentials (e.g., bad password), or your
   browser doesn't understand how to supply
   the credentials required./p
   /body/html

Risposta che ottengo anche con wget, solo che il client capisce che
deve procedere ed offrire le credenziali e da me non succede (altro che
nella macchina di produzione).

Mi resta solo da vedere il codice esatto della comunicazione con il
server ma mi pare molto incomprensibile quello che ottengo. Il codice
con cui testo  è così:

  import sys
  sys.path.insert(0, 'suds_philpem-0.4.3-py2.5.egg')

  from suds import client

  username='...'
  password='xxx'
  URL='https://cewebservices.posteitaliane.it/ROLGC/RolService.svc?WSDL'
  client.Client(URL, username=username, password=password)

ed il virtualenv lo creo con virtualenv --no-site-packages.
Come può lo stesso codice (rsync -a suds...) dare risultati differenti su
macchine formalmente identiche (Debian Lenny)?

Cosa può interferire?


sandro
*:-)


--
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Richiesta aiuto -- cambio .jpg .png in file Microsoft Office Word .doc o .docx

2015-06-24 Per discussione Alessandro Dentella
On Wed, Jun 24, 2015 at 03:12:48PM +0200, Giordano Salvadori wrote:
Buongiorno a tutti del gruppo
 
 
È la prima volta che utilizzo il gruppo per chiedere aiuto, di solito
guardo quelle che sono le richieste e prendo spunto se mi è utile o no.
 
 
Questa volta sono però di fronte ad un problema che non riesco a
risolvere da solo dato che sto cercando da giorni su internet un modo
“intelligente” per cambiare delle immagini .png o .jpg da un documento
di produzione fatto in Office Word in formato .doc o docx è
indifferente dato che posso trasformare uno nell’altro e viceversa.

Ti suggerisco di guardare appy.pod, lo usiamo molto per produrre
documenti odt (ma va bene anche per tutti glia altri formati
supportati da libreoffice). Usa un file .odf come template e via
python puoi passare quello che vuoi.

  http://appyframework.org/pod.html

Ovviamente usa il modulo python uno, che puoi avere in modo più o meno
facile a seconda del sistema operativo che usi...


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


Re: [Python] Domanda su Django

2015-04-15 Per discussione Alessandro Dentella
On Tue, Apr 14, 2015 at 04:24:31PM +0200, Carlos Catucci wrote:
Ho una domanda particolare.
Situazione: 4 progetti distinti ma che condividono lo stesso DB. Fino
qui nulla di che. Pero' alcune applications di un dato project mi
farebebro comodo (come anche il models e compagnia bella) anche in
altro project. Premessa che i 4 soggetti sono tutti dentro una stessa
directory e sono di pari livello. Premetto che googlare non ha portato

Non so cosa intenti per pari livello, ma il posto dove risiedono è
totalmente ininfluente. Potrebbero anche risiedere su macchine
differenti...

È una situazione piuttosto standard per me, i nostri progetti hanno
molte applicazioni e possono condividere lo stesso progetto (es.: lo
stesso listino auto venduto al sole24ore ed ad ansa)

La domanda e': posso da settings.py far puntare ad una app che si trova
in un'altro progetto? 

Nel settings tu dichiari solo il nome dell'applicazione che verrà
trovata nel sys.path. È l'environment che assicura di trovarla, non il
settings. Se usi virtualenv sarà pip a metterla dove serve. Io uso
buildout e uso una cartella con tutte le eggs di tutte le versioni di
tutti i packages di tutti i progetti ed una con i sorgenti *per ogni
progetto*.


 In caso non sia possibile, se mi limitassi a
creare un link (ln -s, il tutto gira su macchine linux di cui ho
accesso completo) potrebbe funzionare come se i files fossero in
locale?

il link simbolico è un modo normalissimo di mostrare una cartella dove
vuoi tu, il lo uso in locale ma in produzione preferisco tenere ogni
progetto diviso. Arriverà il momento in cui devi aggiornare uno e non
l'altro progetto. Io anche in produzione uso una cartella con i
sorgenti e mi basta un hg pull -u per aggiornarli, quindi non vedo grandi
problemi

Lo scopo della cosa e' di non dover allineare la stessa app (a livello
di sorgenti, ovvio che i migrate ad esempio, vadano fatti in ciascun
project coinvolto) in tutti i projects in cui appare.

No! i migrate li devi fare una sola volta per db, non per progetto. Se
li hai già fatti in un progetto anche gli altri progetti si accorgono
che la migrazione  è stata fatta (e ovviamente devi fare tu attenzione
che non rompa nulla, ad esempio aggiungendo un campo obbligatorio di
cui gli altri progetti potrebbero non sapere nulla).


sandro


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Proposte sulla gestione della ML

2015-03-17 Per discussione Alessandro Dentella
 il from per altro fino a qualche mese fa si configurava liberamente,
 adesso meno, nel senso che nella versione a pago è un conto, in quella
 free non ho ancora capito
 a. se si fa
 b. come si fa


Sei libero di farlo, ma solo se come smtp server usi quello del
dominio che vuoi usare e non quello di gmail. La cosa è ragionevole,
se pensi che si pongono anche il probelma di non essere veicoli di
spam.

Se ad esempio hai un dominio su aruba con gestione posta, ma vuoi
usare gmail puoi aggiungere account del tuo dominio, e per
quell'indirizzo fare usare a gmail smtp server quello di aruba.

Mi pare che l'unica cosa che come client non ha è che non è client
smtp, per il resto mi pare molto completo ed affidabile. 

io poi uso solo mutt... e fetchmail per vuotare la casella di gmail...

sandro
*:-)

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


Re: [Python] Django file statici

2015-02-17 Per discussione Alessandro Dentella
Ciao Ivan,

On Mon, Feb 16, 2015 at 08:11:22PM +0100, Ivan B. wrote:
 
 Il 16/02/2015 19:41, Alessandro Dentella ha scritto:
 Che ne dici se ci dividiamo il lavoro? Tu comincia a dirci cosa
 non hai capito, cosa hai fatto e come hai dedotto che non
 funziona... e postaci anche la configurazione... Hai pb col
 runserver o sotto nginx? sandro *:-)
 
 Effettivamente sono stato un po' poco chiaro ^^
 I problemi, per il momento, sono sotto runserver.

Ok, leggi allora proprio fino in fondo...

 Quello che non capisco è come configurare la directory per gli
 static file e come richiamarla nei template.
 
 Ok, ecco cosa ho combinato.
 
 In settings.py ho inserito:
 STATIC_URL = '/static/'

ok, questo cambia come chiamerai i file, non quali e dove sono/li metti

 e controllato che ci fosse 'django.contrib.staticfiles' in installed_apps

Questo garantisce che esista il comando staticfiles

 Nel template ho inserito:
 {% load staticfiles %}
 img src={% static img/prova.png %} alt=Prova /

Secondo me sei già troppo avanti nel debug, fai un pezzo alla
volta. Cerca prima di capire se i file finiscono nel posto giusto

Quello che non vedo nella tua conf è la configurazione del meccanismo
degli staticfiles:

  STATICFILES_DIRS
  STATICFILES_FINDERS
  STATIC_ROOT

che puoi leggere rapidamente con manage.py diffsettings | grep
STATIC sotto linux e mac.

Il meccanismo degli static file sostanzialmete prevede 

* una configurazione per definire i raccoglitori (FINDERS)
* una configuraione per definire la cartella di destinazione
  (STATIC_ROOT)

I finders di default raccolgono da

* applicazioni:
  django.contrib.staticfiles.finders.AppDirectoriesFinder

* filesystem: django.contrib.staticfiles.finders.FileSystemFinder
  Questo a sua volta necessita di STATICFILES_DIRS (una tupla) per
  capire da dove raccogliere

La mia configurazione è così:

STATICFILES_DIRS = ('{PRJ}/web/static_manual',)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder', 
'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
)
STATIC_ROOT = '{PRJ}/web/static_auto'
STATIC_URL = '/static/'

dove {PRJ} lo sostituisci con la root del tuo progetto.

Il nome *static_manual* suggerisce che è una cartella dove metto a mano
gli statici del progetto, *static_auto* è quella dove il comando
collectstatic copia i file prelevandoli da dove è istruito (apps e
fylesystem).

 Il mio progettino di test si chiama (che fantasia) progetto. La
 directory static che contiene a sua volta /img/prova.png ho
 provato a posizionarla nella root di progetto (dove c'è manage.py),
 all'interno di progetto/progetto/ e all'interno di
 progetto/progetto/templates. In nessuna delle tre prove sono

non la metterei nei templates, il resto va bene, pur di dichiararla
nella STATIC_ROOT.

Ma non mi pare che tu abbia chiaro il ruolo di STATICFILES_DIRS.
Io non metto mai nulla in static_auto  (La mia STATIC_ROOT) che lascio
riempire a mano. Il motivo è banale: quella contiene file che non
vogli tracciare con mercurial, mentre la static_maual (dichiarata in
STATICFILES_DIRS è composta di file che tengo sotto controllo di
versione.

DEBUG
=


A questo punto ti suggerisco di lanciare manage.py collectstatic e
verificare se i file arrivano al posto giusto (nella STATIC_ROOT) e
solo dopo che te ne sei accertato arriverai al debug del template.

RUNSERVER
=

Quando usi il runserver non ti serve neanche passare dalla cartella
STATIC_DIR se in urls.py del progetto hai qualcosa tipo:

  urlpatterns += staticfiles_urlpatterns()

Risulta pratico per lo sviluppo. Ma prima di usare questo termina con
successo gli altri passaggi.


sandro
*:-)

-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Django file statici

2015-02-16 Per discussione Alessandro Dentella
On Mon, Feb 16, 2015 at 07:09:54PM +0100, Ivan B. wrote:
 Ciao a tutti,
 ho un problemino da neofita con django e la ricerca su google mi ha
 confuso ancora di più le idee...
 Devo inserire nei miei file template il riferimento al css e a delle
 immagini. Ho provato a seguire questo howto:
 https://docs.djangoproject.com/en/1.7/howto/static-files/
 ma probabilmente (anzi sicuramente) non ne ho capito il funzionamento.
 
 Qualcuno ha voglia e pazienza per spiegarmi come funziona?



Che ne dici se ci dividiamo il lavoro?
Tu comincia a dirci cosa non hai capito, cosa hai fatto e come hai
dedotto che non funziona... e postaci anche la configurazione...
Hai pb col runserver o sotto nginx?

sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Scope delle variabili.

2015-02-03 Per discussione Alessandro Dentella
On Tue, Feb 03, 2015 at 10:12:50AM +0100, Gollum1 wrote:
 Mi sto perdendo qualcosa...
 
 numbers_urls = dict()
 number_count = 0
 
 def numbers_start_element(name, attrs):
 if name == 'number':
 number_count += 1
 
 if 'uri' in attrs.keys():
 numbers_urls[name] = attrs['uri']
 
 print(number_count)
 
 
 Perché numbers_urls viene visto correttamente come variabile globale
 e modificata, mentre number_count no? sono sicuro che mi sto perdendo
 in una banalità oscena.

Non so se è una banalità, ma non direi. 
Nessuna delle 2 variabili viene passata in argomento ma una è mutable
e l'altra no.

Quando scrivi numbers_urls[name] = attrs['uri'] non stai
riassegnando la variabile, ma la stai solo modificando (prova a
riassegnarla e vedi che all'esterno NON vedi il cambiamento).
Con gli immutable non puoi fare una modifica, quindi il += 1
equivale ad un rebind della variabile che quindi viene fatto solo
nello scopo locale.

sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Best practices per import

2015-01-22 Per discussione Alessandro Dentella
Ciao Diego, 

On Thu, Jan 22, 2015 at 06:33:24PM +0100, Diego Barrera wrote:
 Buona sera a tutti!
 Solitamente utilizzo e vedo utilizzato import all'inizio del modulo,
 ma a volte mi e' capitato sia di scrivere che di leggere import
 all'interno di funzioni o classi.
 L'unico vantaggio che vedo nel caso di utilizzo all'interno
 di una funzione (o classe) e' che se non viene richiamata la funzione,
 si evita l'import.
 Altri vantaggi, svantaggi o caveat?
 Quale e' la forma stilistica piu' corretta?


io uso l'import all'interno delle funzioni in alcuni casi in cui mi
serve rompere un import circolare.

Ad esempio in Django supponi di volere usare delle utility nei
models. per pulizia metti le utility in un mdulo separato ma loro
richiedono a loro volta i modelli.

Quando Django importa tutti i modelli, si trova a dovere importare le
utili che a loro volta importano i modelli. In molte circostanze
questo non funziona ed in modo non ovvio.


sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy




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


Re: [Python] Impariamo a programmare in Python in 100 ore Was: Python vs Java

2014-12-31 Per discussione Alessandro Dentella
Ciao a tutti,

torno all'oggetto di questa discussione, perché forse fra un paio di
mesi potrò dirvi qualcosa in più...

La Thunder Systems per cui lavoro ha deciso di tenere un corso di 12
giornate di Python e Django rivolto a persone che abbiano come
prerequisito la conoscenza di almeno un linguaggio di programmazione.

http://www.thundersystems.it/it/news/corso-web-developer-junior-con-python-e-django/
 

Il corso è gratuito e lo scopo dichiarato è quello di conoscere
persone a cui proporre un contratto di lavoro o una collaborazione,
data la cronica mancanza di sviluppatori Python (qui a Milano).

Terrò personalmente il corso e non ho l'ambizione di fare uscire in 12
giornate gente che sappia fare siti robusti, manutenibili e
quant'altro ma di stimolare curiosità e passione che necessariamente
venga poi coltivata in proprio. Per questo le lezioni non sono
concentrate ma disseminate nell'arco di 2 mesi.

Dato l'obiettivo del corso, il destinatario a cui si rivolge sarebbe
un neolaureato in qualcosa di scientifico che possa eventualmente
essere interessato a lavorare con noi (ma abbiamo anche già
raccolto un'iscrizione di un avvocato con la passione della
programmazione). 

Se avete in mente persone che possano essere interessate, sentitevi
liberi di fare girare l'informazione e magari di condividerla nei
vostri social...

Quanto ai tempi, sono molto più pessimista di Carlos. Credo con Enrico
che non insegnare certi argomenti sia partire monchi (come fai a non
usare le form con django!) ma per avere avuo un certo numero di
collaboratori di varia esperienza credo che si possa rimanere junior e
scrivere codice poco manutenibile anche dopo svariati anni di
lavoro...


sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



___
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 Alessandro Dentella
On Fri, Dec 12, 2014 at 02:52:05PM +0100, Gabriele Battaglia wrote:
 Salve a tutti.
 
 Un domandone banale, per il quale ammetto candidamente di
 vergognarmi mostruosamente e faccio appello alla vostra infinita
 pazienza.
 
 Nel percorso C:\Dropbox\py è presente il modulo key.py.
 
 Io ho bisogno di importarlo dallo script e4ec.py che risiede nel
 percorso C:\Dropbox\py\e4ec

 
 Ovviamente,
 
 import key
 
 non funziona, perchè key.py non si trova nella cartella dello script
 principale ne in quelle indicate da PYTHONPATH, che nel mio caso
 risulta non definita.
 
 Allora ho provato a scrivere
 
 PYTHONPATH = [C:\\Dropbox\\py\\e4ec]

PYTHONPATH è una variabile d'ambiente, non una lista python:

 PYTHONPATH

Augment the default search path for module files. The format is
the same as the shell’s PATH: one or more directory pathnames
separated by os.pathsep (e.g. colons on Unix or semicolons on
Windows). Non-existent directories are silently ignored.

credo inoltre ma suggerisco di verificarlo che tu possa mettere u
signolo /: PYTHONPATH=C:/Dropbox/py/e4ec


 Qualche indizio per orientarmi verso la soluzione?


Analizzare os.path


sandro
*:-)
___
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 Alessandro Dentella
On Fri, Dec 12, 2014 at 02:22:40PM +, enrico franchi wrote:
 2014-12-12 14:08 GMT+00:00 Alessandro Dentella san...@e-den.it:
 
 
   Qualche indizio per orientarmi verso la soluzione?
 
 
  Analizzare os.path
 
 
 E, per inciso, la soluzione *non* e' smacchinare con il path (non e'
 os.path, che e' poveraccio solo un modulo).

ok, per distrazione ho scritto os.path invece che sys.path
Il senso era ovviamente quello che il modo di debuggare dove sta il
problema è di analizzare sys.path. Se un modulo non è nel sys.path non
viene visto se sta lì deve essere visto. PYTHONPATH è *un* modo di
manipolare il sys.path:

sandro@bluff:~$ PYTHONPATH=/tmp/my/funny/path ipython --no-banner

  In [1]: import sys

  In [2]: sys.path
  Out[2]: 
  ['',
   '/usr/bin',
   '/tmp/my/funny/path',
   '/usr/lib/python2.7',
   ...



 La soluzione e' usare virtualenv, setup.py, pip e compagnia.

dipende. PYTHONPATH è comodo se ad esempio vuoi provare un pacchetto
senza installarlo, magari prorpio per vedere le differenze fra due rel
delo stesso pacchetto.


Puoi anche essere già un in virtualenv e usare PYTONPATH per dare la
precedenza ad una versione che vuoi testare senza toccare altro.

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


Re: [Python] MVC: web2py

2014-11-15 Per discussione Alessandro Dentella
On Fri, Nov 14, 2014 at 01:04:57PM +, enrico franchi wrote:
 2014-11-12 1:05 GMT+00:00 Benedetto Campanale benedetto.campan...@gmail.com
 :
 
  Cambio oggetto del thread per non mischiare gli argomenti.
 
  MVC = Model-View-Controller
  http://it.wikipedia.org/wiki/Model-View-Controller
 
  Web2py è un MVC open-source scritto in Python (da un italiano). A mio
  giudizio è un ottimo MVC indicato per organizzare dati di un DB (che può
  essere mysql, oracle, postgre,...) e visualizzarli in una pagina web dove
  puoi sbizzarrirti con Python.
 
 
 Non mi e' chiaro perche' dopo avere riportato la (corretta) definizione di
 MVC sostieni che Web2Py che e' un *framework* sia un *pattern*.
 
 Poi, per inciso, Web2Py e' uno dei framework python meno Pythonici in cui
 mi sono imbattuto.
 Sarebbe l'ultima di tutte le scelte possibili, dal mio punto di vista.


Su questo sono curioso. Non ho mai usato/visto web2py ma un amico che
stimo molto come competenze informatiche e che contribuisce allo
sviluppo di web2py me lo ha caldeggiato più volte. In che senso lo
consideri poco Pythonico?


sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


[Python] Sphinx, field list refs

2014-11-06 Per discussione Alessandro Dentella
Ciao,

questa non è una domanda Python ma per la scrittura di
documetazione...

in una field list ho questa struttira funzionante:

   * fornisce i segg. comandi:

 :dj_: bla bla
 :jmb-start_: bla bla


   dj
   ==


dj_ viene correttamente interpretato come elemento di field list e
viene aggiunto il link al target composto dal titolo del capitolo
successivo.

Volendo scorporare in un file differente la documentazione del comando
`dj`, non trovo più una sitassi funzionante. Ho provato anche a
dichiarare esplicitamente il target nel file separato:


  .. _dj:

  dj
  ==

A questo punto mi funziona il riferimento:

  :ref:`dj`

ma non funziona come elemento di lista:

  ::ref:`dj`:

ho provato anche:

  .. |dj| :ref:`dj`
  :|dj_|:

  :dj_:
  

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


Re: [Python] celery, uwsgi smart-attach-daemon

2014-09-25 Per discussione Alessandro Dentella
  Eventualmente con attach-daemon2 hai un controllo maggiore sul
  comportamento:
 
  https://github.com/unbit/uwsgi-docs/blob/master/AttachingDaemons.rst#--attach-daemon2
 
  Sarebbe esattamente quello che cerco, ma non riesco assolutamente a
  vedere alcun segnale.
 
  La mia conf è:
 
  celery_pid = /var/run/uwsgi/cogema-celery.pid
  attach-daemon2 = cmd=/usr/local/sbin/test-signals.py
  %(celery_pid),pidfile=%(celery_pid),stopsignal=3,reloadsignal=15
 
  La script test-signals.py è riportata in fondo.
  Quando io faccio partire uwsgi nei log leggo:
 
  [uwsgi-daemons] found valid/active pidfile for
  /usr/local/sbin/test-signals.py /var/run/uwsgi/cogema-celery.pid (pid:
  31952)
 
  Ma poi nessun segnale arriva al processo test-signals.py. Se da
  console per prova eseguo kill -3 31952, vedo subito il log del segnale
  arrivato.
 
 
 
 
 --attach-daemon2 (e piu' in generale tutte le opzioni che finiscono con
 '2') sono le versioni user-unfriendly :P che ti permettono di modificare i
 pattern prestabiliti agendo direttamente sulle strutture interne.
 
 Nel caso specifico, settando un pidfile stai forzando la modalita' smart,
 che non e' quella che vuoi tu.
 
 cmd=/usr/local/sbin/test-signals.py,stopsignal=3,reloadsignal=15
 
 e' sufficiente a fare quello che vuoi.


Ci sono quasi. Reload ora arriva, ma restart passa ancora lo stesso
segnale di reload::

   root@thunder-dev:/home/www/office.cogema.it# grep attach 
/etc/uwsgi/cogema.ini
   attach-daemon2 = cmd=/usr/local/sbin/test-signals.py  
%(celery_pid),stopsignal=3,reloadsignal=15
   root@thunder-dev:/home/www/office.cogema.it# cat /tmp/sig.log 
   root@thunder-dev:/home/www/office.cogema.it# /usr/bin/loca
   localclocalelocaledef locate
locate.findutils  
   root@thunder-dev:/home/www/office.cogema.it# /usr/local/bin/uwsgi --reload 
/var/run/uwsgi/cogema.pid 
   root@thunder-dev:/home/www/office.cogema.it# cat /tmp/sig.log 
   3 
   root@thunder-dev:/home/www/office.cogema.it# /usr/local/bin/uwsgi --stop 
/var/run/uwsgi/cogema.pid 
   root@thunder-dev:/home/www/office.cogema.it# cat /tmp/sig.log 
   3 
   3 

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


Re: [Python] celery, uwsgi smart-attach-daemon

2014-09-24 Per discussione Alessandro Dentella
On Tue, Sep 23, 2014 at 08:30:15AM +0200, Roberto De Ioris wrote:
 
  Ciao a tutti,
 
 
  sto cercando la configrazione ottimale per fare partire celery con
  django in produzione.
 
  Uso nginx + uwsgi per l'applicazione principale e credevo leggendo [1]
  [2] che smart-attach-daemon avrebbe potuo risolvere il problema di
  garantirmi che un reload di uwsgi (uwsgi --reload) inviasse un segnale
  al processo di celery.
 
  Forse ho compreso male la documentazione che in effetti non dice
  esplicitamente cosa dovrebbe succedere ma solo ::
 
 
Pidfile governed processes can survive death or reload of the master
so long as their pidfiles are available and the pid contained
therein matches a running pid. This is the best choice for processes
requiring longer persistence, and for which a brutal kill could mean
loss of data such as a database.
 
 
 smart-attach-daemon serve proprio ad evitare che un demone venga ucciso
 durante un riavvio. Effettivamente celery (almeno nella mia mente) e' uno
 di quei servizi che dovrebbe andare per fatti suoi, e quindi
 smart-attach-daemon e' l'approggio giusto.
 
 Mi pare di capire pero' che tu invece vuoi che a ogni reload corrisponda
 anche un restart di celery, in questo caso attach-daemon e' quello che ti
 serve.
 
 Eventualmente con attach-daemon2 hai un controllo maggiore sul comportamento:
 
 https://github.com/unbit/uwsgi-docs/blob/master/AttachingDaemons.rst#--attach-daemon2

Sarebbe esattamente quello che cerco, ma non riesco assolutamente a
vedere alcun segnale.

La mia conf è:

celery_pid = /var/run/uwsgi/cogema-celery.pid
attach-daemon2 = cmd=/usr/local/sbin/test-signals.py 
%(celery_pid),pidfile=%(celery_pid),stopsignal=3,reloadsignal=15

La script test-signals.py è riportata in fondo.
Quando io faccio partire uwsgi nei log leggo:

[uwsgi-daemons] found valid/active pidfile for /usr/local/sbin/test-signals.py 
/var/run/uwsgi/cogema-celery.pid (pid: 31952)

Ma poi nessun segnale arriva al processo test-signals.py. Se da
console per prova eseguo kill -3 31952, vedo subito il log del segnale
arrivato. 

lumi?

grazie
sandro

===
#!/usr/bin/python
import os
import sys
import time
import signal

def show(sig, frame):
f = open('/tmp/sig.log', 'a')
f.write(%s \n % sig)

def sig_start():
sigs = range(2,16)
sigs.remove(9)
for sig in sigs:
signal.signal(sig, show)

## log the pid
#f = open('/var/run/uwsgi/cogema-celery.pid', 'w')
f = open(sys.argv[1], 'w')
f.write(%s\n % os.getpid())
f.close()

sig_start()

while 1:
  time.sleep(5)
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


[Python] celery, uwsgi smart-attach-daemon

2014-09-22 Per discussione Alessandro Dentella
Ciao a tutti,


sto cercando la configrazione ottimale per fare partire celery con
django in produzione.

Uso nginx + uwsgi per l'applicazione principale e credevo leggendo [1]
[2] che smart-attach-daemon avrebbe potuo risolvere il problema di
garantirmi che un reload di uwsgi (uwsgi --reload) inviasse un segnale
al processo di celery.

Forse ho compreso male la documentazione che in effetti non dice
esplicitamente cosa dovrebbe succedere ma solo ::


  Pidfile governed processes can survive death or reload of the master
  so long as their pidfiles are available and the pid contained
  therein matches a running pid. This is the best choice for processes
  requiring longer persistence, and for which a brutal kill could mean
  loss of data such as a database.

Avendo messo una mia script di test non vedo arrivare alcun
segnale. Mi sbaglio? che dovrebbe succedere veramente con
smart-attach-daemon? 

La parte che reputo interessante della conf di uwsgi è questa::

  env = DJANGO_SETTINGS_MODULE=web.settings
  env = HOME=/tmp
  master = true
  module = django.core.handlers.wsgi:WSGIHandler()
  prj_dir = /home/www/office.cogema.it
  celery_pid = /var/run/uwsgi/cogema-celery.pid
  home  = %(prj_dir)/parts/vpython

  smart-attach-daemon = %(celery_pid) /usr/local/sbin/test-signals.py 
%(celery_pid)

test-signals.py logga ogni segnale che invio con kill, e non logga
nulla quando lancio uwsgi --reload



sandro
*:-)





[1] http://uwsgi-docs.readthedocs.org/en/latest/Options.html#smart-attach-daemon
[2] http://uwsgi-docs.readthedocs.org/en/latest/AttachingDaemons.html

-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Una domanda sui dizionari.

2014-09-17 Per discussione Alessandro Dentella
On Wed, Sep 17, 2014 at 03:04:41PM +0200, Gabriele Battaglia wrote:
 Ciao a tutti.
 So che ne sentivate la mancanza: troppi tecnicisimi, in questi
 ultimi mesi, insomma, serviva proprio una bella domanda banale delle
 mie, di quelle che ti fanno raddrizzare la schiena sulla sedia
 mentre esclami: Ma questo, invece del manuale di Python, s'è letto
 topolino!
 Però poi, la nota positiva è che domande banali spesso possono
 essere soddisfatte con risposte semplici che non richiedono prove o
 spulciamenti vari di siti e forum.
 
 Ho un dizionario che contiene il frutto di una scansione su una matrice.
 Avrei bisogno di stamparlo a video, nello stesso ordine con cui le
 coppie chiave:valore, sono state aggiunte ma non trovo un modo per
 farlo.

Direi con un OrderedDict:

https://docs.python.org/2/library/collections.html#collections.OrderedDict


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


Re: [Python] DJANGO

2014-04-30 Per discussione Alessandro Dentella
On Tue, Apr 29, 2014 at 08:57:51PM +0200, Francesco Pischedda wrote:
 Ciao,
 
 spendendo la stessa cifra puoi prendere un server taglia quot;developerquot;
 su http://cloudatcost.com/ e ci fai tutti gli esperimenti che vuoi, 
 chiaramente
 devi investire un po di tempo per fare il setup della macchina ma ne vale la
 pena.
 Altre alternative sono i piani free di openshift, heroku, aws etc etc etc
 ognuno con i suoi pro e contro


Proprio ieri un amico si diceva molto soddisfato di questo servizio:

  https://contabo.com/?show=configuratorvserver_id=104

non paragonabile ai 20 E una tantum ma in 8 euro/mese c'è traffico
illimitato, 200GB di hd e 4 GB di RAM.

sandro
*:-)


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] SQLITE Libri

2014-03-10 Per discussione Alessandro Dentella
On Mon, Mar 10, 2014 at 09:44:20AM +0100, Attilio Menegon wrote:
 Buon lunedì a tutti,
  
 2 – Esiste un interfaccia grafica per la gestione del DB SQLITE?


Sqlkit ha un browser -sqledit- che usa sqlalchemy e quindi chiaramente può
anche editare db sqlite (ma non solo).

È in Python ed usa le PyGtk, quindi facile da installare in Linux (per 
Ubuntu = 13.10 apt-get install python-sqlkit) un po' una pena con Windows
e Mac.

È parecchio configurabile l'interfaccia grafica ed i filtri sono molto
comodi.

  http://sqlkit.argolinux.org/misc/sqledit.html

sandro
*:-)



-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Deploy con nginx e proxy_pass - epilogo

2014-01-15 Per discussione Alessandro Dentella
On Sat, Jan 04, 2014 at 12:21:30PM +0100, Manlio Perillo wrote:
 On 03/01/2014 12:50, Roberto De Ioris wrote:
 [...]
 provate a ridurre a 3 secondi il proxy_connect_timeout di nginx,
 
 Dato che Linux ignora l'hint sulla backlog, il parametro su cui agire è
 proxy_send_timeout.
 
 Sul wiki di Nginx c'è un commento appropriato riguardo
 proxy_connect_timeout:
 http://wiki.nginx.org/HttpProxyModule#proxy_connect_timeout
 http://wiki.nginx.org/HttpProxyModule#proxy_read_timeout
 
 Impostare proxy_send_timeout potrebbe non essere efficace, a causa
 del buffering effettuato dal kernel.  In questo caso occorre
 modificare proxy_read_timeout, ma va fatto con cautela per evitare
 di mandare in timeout richieste legittime (ma semplicemente lente).
 In alternativa si può provare a modificare, dall'applicazione
 Python, SO_RCVBUF.


Purtroppo anche la modifica del send_timeout non ha sortito alcun
effetto. Non ho provato a modifcare SO_RCVBUF.

Ho alla fine preso una strada completamente differente che però in concreto
ha dati i risultati desiderati.

Ho deciso di creare 2 pool di processi (upstream) differenti uno per i
processi lenti ed uno per gli altri.

Dal momento che le chiamate lente hanno  URL ben definiti, ho deciso di
redirigere queste chiamate su un pool di processi differente. In questo modo
so per certo che una chiamata veloce non sarà mai rallentata da una lenta e,
semplicemnete aumentando i processi lenti posso arrivare a sincerarmi che
nessun processo lento abbia una probabilità significativa di trovarsi in
coda ad un altro processo lento (da momento che sono relativamente pochi al
giorno).

Ora possiamo dedicarci a capire cosa hanno di sbagliato i processi lenti...


Grazie a Manlio e Roberto per l'aiuto offerto

sandro
 


-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Deploy con nginx e proxy_pass

2014-01-03 Per discussione Alessandro Dentella
On Mon, Dec 30, 2013 at 05:26:57PM +0100, Roberto De Ioris wrote:
  Mi pare di capire che la soluzione della listen queue che mi hai indicato
  risolverebbe questo problema.
 
 
 
 server = HTTPServer(app)
 server.bind(post, backlog=1)
 
 (prova anche con zero, su alcuni kernel funziona, anche se non ricordo se
 e' per quelli piu' recenti o quelli piu' vecchi)

Purtroppo questa strada non ha funzionato. Ricordo che il probelma che
cerchiamo di risolvere è che quando viene interrotto una chiamata lunga,
nginx libera quella connessione e quindi diritta verso quel processo la
prossima chiamata, ma il processo di fatto è occupato.

La nostra simulazione è stata fatta con 2 funzioni: is_up e blocking che usa
time.sleep() 

   class IsUp(tornado.web.RequestHandler):
   def get(self): 
   self.write(Is Up Porta %d ...)
self.finish()
   
   class Blocking(tornado.web.RequestHandler):
   def get(self, numero=10):
   time.sleep(int(numero)) 
self.write(Bloccato Porta %s\n % options.port) 
self.finish()
   
la chiamata usando 'wget -q -O - http://ngtest/blocking/30/' ed
interrompendolo con Control-c.
In un terminale separato in ciclo di 'wget -q -O - http://ngtest/is_up'
Il ciclo si blocca nel momento della interruzione e riprende solo quando
termita il tempo (e quindi il processo si libera)

  L'approccio migliore (o meglio diciamo quello risolutivo) e' che i
  processi usino lo stesso socket, puoi provare il plugin tornado di
  uWSGI:
 
  http://uwsgi-docs.readthedocs.org/en/latest/Tornado.html

Siamo passato quindi a leggere la documentazione per fare questa prova ma
ammetto che ho qualche dubbio. Dimmi per cortesia se scrivo inesattezze... 

Credo di capire che vengono descritte più opzioni di configurazione: con i
greenlet ed una programmazione asincrona o con processi tornado
indipendenti.

Considerando che il tutto nasce proprio dal fatto che abbiamo probelmi nelle
funzioni che NON sono state scritte in modo asincrono quello che vogliamo è
di usare la configurazione descritta in fondo Binding and listening with
Tornado.

Mi pare di capire che in questa ipotesi vengano fatti partire processi
differenti e per ogni processo venga eseguito start_the_tornado_servers,
finiremmo quindi -come ora- ad avere svariati server tornado in ascolto ma
con la differenza che il routing fra un server e l'altro sarebbe gestito da
uwsgi, corretto? è in questa situazione che uwsgi usa lo stesso socket per
tutti i processi?

*Se* fin qui e` corretto mi resta poi da capire come mai
'start_the_tornado_servers' lanci application e non 't_application' e come
construire la application che viene chiamata da uwsgi. Nell'esempio i 3
puntini presuppongono un lettore meno confuso del sottoscritto...


Lascio poi al mio collega un'altra domanda su un probelma di segfault...

grazie per l'attenzione
sandro
*:-)

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


Re: [Python] Deploy con nginx e proxy_pass

2014-01-03 Per discussione Alessandro Dentella
On Fri, Jan 03, 2014 at 12:45:02PM +0100, Manlio Perillo wrote:
 On 03/01/2014 12:34, Alessandro Dentella wrote:
 [...]
 La nostra simulazione è stata fatta con 2 funzioni: is_up e blocking che usa
 time.sleep()
 
 class IsUp(tornado.web.RequestHandler):
 def get(self):
 self.write(Is Up Porta %d ...)
  self.finish()
 
 class Blocking(tornado.web.RequestHandler):
 def get(self, numero=10):
 time.sleep(int(numero))
  self.write(Bloccato Porta %s\n % options.port)
  self.finish()
 
 la chiamata usando 'wget -q -O - http://ngtest/blocking/30/' ed
 interrompendolo con Control-c.
 
 Ok.
 Ma quante instanze di tornado hai attive?

10 al momento, vedi descrizione qui [1]

 Se ne hai attiva una sola, mi sembra ovvio che blocca tutto.
 
 Se ne hai N, facendo N richieste di questo genere blocchi ancora tutto.

Certo ma ho poche richieste bloccanti (2%  2 secondi) ed un totale molto
basso di richieste lente: 100/giorno   10 secondi, 300/giorno 4 secondi.


 In un terminale separato in ciclo di 'wget -q -O - http://ngtest/is_up'
 Il ciclo si blocca nel momento della interruzione e riprende solo quando
 termita il tempo (e quindi il processo si libera)
 
 
 Che ciclo?

un for della bash

 Per concludere, tieni conto che usare cose come Tornado è tutt'altro
 che banale.  Tutto lo stack (applicazione + framework + eventuali
 librerie) deve essere sviluppato con la programmazione asincrona in
 mente.  E' vero che ci sono dei monkey patch per alcune funzioni
 della libreria standard, ma non ritengo sia saggio affidarsi
 ciecamente a loro.  Python e la libreria standard semplicemente non
 sono pensati per un ambiente a green thread.


Questo è il peccato originale che non dipende da me all'interno del quale mi
devo muovere. Chi ha scritto l'applicazione non ha capito la specificità di
tornado ed ha fatto una programmazione basata su richieste non asincone.

In questo quadro e per il poco tempo che io mi occupo di questo progetto ho
solo potuto suggerire nell'ordine 1) di passare a django 2) di modificare il
setup per moltiplicare i processi in modo da evitare i blocchi 3) di
ottimizzare alcune funzioni che probabilmente prendono tempo quando non
dovrebbero. 

Come già detto in altra mail, il problema residuo sorge quando una chiamata
viene interrotta. Nginx libera subito la risorsa e passa una nuova chiamata
a quel processo che in realtà è ancora occupato.

sandro


[1] http://comments.gmane.org/gmane.comp.python.general.italian/14562
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Deploy con nginx e proxy_pass

2014-01-03 Per discussione Alessandro Dentella
On Fri, Jan 03, 2014 at 12:50:54PM +0100, Roberto De Ioris wrote:
 
  On Mon, Dec 30, 2013 at 05:26:57PM +0100, Roberto De Ioris wrote:
   Mi pare di capire che la soluzione della listen queue che mi hai
  indicato
   risolverebbe questo problema.
  
 
 
  server = HTTPServer(app)
  server.bind(post, backlog=1)
 
  (prova anche con zero, su alcuni kernel funziona, anche se non ricordo
  se
  e' per quelli piu' recenti o quelli piu' vecchi)
 
  Purtroppo questa strada non ha funzionato. Ricordo che il probelma che
  cerchiamo di risolvere è che quando viene interrotto una chiamata lunga,
  nginx libera quella connessione e quindi diritta verso quel processo la
  prossima chiamata, ma il processo di fatto è occupato.
 
  La nostra simulazione è stata fatta con 2 funzioni: is_up e blocking che
  usa
  time.sleep()
 
 class IsUp(tornado.web.RequestHandler):
 def get(self):
 self.write(Is Up Porta %d ...)
  self.finish()
 
 class Blocking(tornado.web.RequestHandler):
 def get(self, numero=10):
 time.sleep(int(numero))
  self.write(Bloccato Porta %s\n % options.port)
  self.finish()
 
  la chiamata usando 'wget -q -O - http://ngtest/blocking/30/' ed
  interrompendolo con Control-c.
  In un terminale separato in ciclo di 'wget -q -O - http://ngtest/is_up'
  Il ciclo si blocca nel momento della interruzione e riprende solo quando
  termita il tempo (e quindi il processo si libera)
 
 Provate a ridurre a 3 secondi il proxy_connect_timeout di nginx, e'
 probabile che abbiate sempre almeno uno slot listen_queue libero anche se
 lo avete impostato a 1/0. In questo modo se la connessione non completa in
 3 secondi, nginx considera il peer morto (e passa a quello dopo se lo
 avete configurato a dovere)

nessun cambiamento. Il proxy_connect_timeout pare proprio ignorato. 
questa la conf:

server {
listen 80;
server_name ngtest;
location / {
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 3s;
proxy_pass http://produzione;
}
}

  Credo di capire che vengono descritte più opzioni di configurazione: con i
  greenlet ed una programmazione asincrona o con processi tornado
  indipendenti.
 
 guarda terrei questo approccio proprio come ultima spiaggia (e
 probabilmente e' piu' semplice modificare tornado) se la soluzione sopra
 non dovesse funzionare

ecco appunto...
Il primo punto: capisco correttamente che la conf è quella descritta nel
capitoletto Binding and listening with Tornado?

Nella mail precedente scrivevi:

 L'approccio migliore (o meglio diciamo quello risolutivo) e' che i
 processi usino lo stesso socket, puoi provare il plugin tornado di uWSGI:

ora la dici ultima spiaggia. come mai?


sandro
*:-)

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


Re: [Python] Deploy con nginx e proxy_pass

2013-12-30 Per discussione Alessandro Dentella
On Tue, Dec 24, 2013 at 11:58:05AM +0100, Roberto De Ioris wrote:
 
 
 
  io sono convinto che se il modello resta round robbin puro, anche se
  raddoppiassi i processi avrei solo dimezzato la probabilità di incapare in
  una chiamata lunga, mentre se potessi evitare di passare chiamate ad un
  processo che sta lavorando eviterei proprio questa cosa.
 
 
  aggancia una strace ai processi tornado durante un blocco per vedere che
  succede. Probabilmente non ci sara' molto da fare se non aggiungere
  altri
  processi tornado (sempre che sia tollerabile dall'applicazione).
 
  le chiamate lunghe non sono chiamate che a random prendono tanto tempo,
  sono
  chiamate che fanno molte cose probabilmente non ottimizzate, ma sulle
  quali io non ho diretto controllo (sono inizializzazioni mensili di alcune
  posizioni).
 
  Grazie per il suggeriemnto
  sandro
  *:-)
 
 Nginx non puo' farlo (vedi pero' nota sotto)
 
 L'approccio migliore (o meglio diciamo quello risolutivo) e' che i
 processi usino lo stesso socket, puoi provare il plugin tornado di uWSGI:
 
 http://uwsgi-docs.readthedocs.org/en/latest/Tornado.html
 
 ma non e' compilato di default (per motivi altamente tecnici: ovvero odio
 la programmazione callback based e non voglio incentivarla ulteriormente
 ;)
 
 anche gunicorn ha un worker model per tornado ma e' deprecato (ma presumo
 funzioni ancora)
 
 Nota:
 Se abbassi la listen queue del socket dentro tornado a 1 (in alcuni kernel
 puoi metterla anche a 0 che sarebeb addirittura meglio), otterrai subito
 un errore in caso di worker occupato e nginx passera' la richiesta al
 backend successivo. E' un buon trucco (anche se poco diffuso) nel tuo caso
 specifico.

Grazie Roberto,

non mi è chiaro se il suggerimento di abbassare la listen queue possa essere
usato indipendentemente da uwsgi (come credo). In questo caso non ho capito
come farlo. Non ho trovato parametri di tornado. Credo che quello che
suggerisci sia poi la backlog della socket.listen() ma veramente non ho
alcuna competenza di questo campo...


Al momento, dopo essere passato a nginx 1.4+, un tornado minimale di test
con 2 handler uno che risponde subito e l'altro che si blocca, arrivo ad una
situazione ottimale fino a che uno  abortisce la richiesta. A quel punto ho
la sensazione che nginx azzeri la lista di connessione attive per una porta
particolare mentre tornado resta appeso. Nginx passa la prossima chiamata a
quella porta ed il tutto si blocca.

Mi pare di capire che la soluzione della listen queue che mi hai indicato
risolverebbe questo problema.

sandro
*:-)


PS: ho letto la documentazione del plugin di tornado di uWSGI, mi pare
relativamete semplice ma non ho ancora avuto tempo di provarla
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Deploy con nginx e proxy_pass

2013-12-24 Per discussione Alessandro Dentella
On Tue, Dec 24, 2013 at 09:19:19AM +0100, Roberto De Ioris wrote:
 
  Ciao a tutti,
 
  ho bisogno di capire una configurazione di un webs server nginx di un
  cliente che usa proxy_pass passando come destinatario
 
  upstream produzione {
  server 127.0.0.1:8080;
  server 127.0.0.1:8081;
  ...
  }
  proxy_pass http://produzione;
 
 
  Quello che vorrei capire è come funziona e se è configurabile il
  meccanismo
  di assegnazione della richiesta ai vari server.
 
  Il problema nasce dal fatto che hanno una applicazione fatta con tornado
  ma
  con chiamate non asincrone, ed una base di codice che si sono sviluppati
  negli anni e che non hanno il coraggio/determinazione di cambiare.
  il 99% delle funzioni prende meno di 1 secondo ma acunin prendono anche 10
  secondi fino a 25 e questo è accettabile.
 
  Il problema nasce dal fatto che in alcuni casi sperimentano dei blocchi.
 
  La mia sensazione (e qui paleso la mia ignoranza in merito) è che nginx
  faccia round robbin fra i 10 processi esistenti e non stia a guardare se
  hanno terminato o meno la precedente richiesta. Esiste un modo di forzare
  uno schema per cui vengano serviti solo i processi che non hanno in corso
  una elaborazione?
 
  NB: non esiste un problema di troppo carico, il server è sostanzialmente
  sottosfruttato, il sito non ha un carico elevato
 
  Sono graditi anche puntatori a letture illuminanti...
 
  grazie
  sandro
  *:-)
  ___
 
 
 Nelle release  1.3 di nginx puoi impostare il least connections come
 algoritmo:
 
 http://nginx.org/en/docs/http/ngx_http_upstream_module.html#least_conn

grazie, leggo nella doc:

 Specifies that a group should use a load balancing method where a request is
 passed to the server with the least number of active connections, taking
 into account weights of servers. If there are several such servers, they are
 tried using a weighted round-robin balancing method.

ed immagino che le active connections siano esattamente quelle in
elaborazione. Considerando che ho 10 processi, il 99% delle richieste viene
espletato in meno di 1 secondo e ho un rate che nelle ore di punta arriva
a 2/secondo credo che sia molto probabile che ci sia sempre un processo
libero e che quindi questo venga scelto da questo algoritmo, se lo capisco
correttamente. 

 ma ho seri dubbi che il problema sia li', appena hai scritto tornado con
 chiamate non asincrone, hai praticamente descritto IL problema ;)

Vero, ma questa è una eredità su cui non ho potere...  per bypassarlo avevo
modificato il codice per potere girare con svariati (10 al momento) processi
indipendenti, ora è così ed in effetti la situazione è abbastanza gestibile
con l'eccezione dei blocchi descritti sopra.

io sono convinto che se il modello resta round robbin puro, anche se
raddoppiassi i processi avrei solo dimezzato la probabilità di incapare in
una chiamata lunga, mentre se potessi evitare di passare chiamate ad un
processo che sta lavorando eviterei proprio questa cosa.


 aggancia una strace ai processi tornado durante un blocco per vedere che
 succede. Probabilmente non ci sara' molto da fare se non aggiungere altri
 processi tornado (sempre che sia tollerabile dall'applicazione).

le chiamate lunghe non sono chiamate che a random prendono tanto tempo, sono
chiamate che fanno molte cose probabilmente non ottimizzate, ma sulle
quali io non ho diretto controllo (sono inizializzazioni mensili di alcune
posizioni).

Grazie per il suggeriemnto
sandro
*:-)



-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy




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


Re: [Python] domanda banale

2013-12-10 Per discussione Alessandro Dentella
On Tue, Dec 10, 2013 at 04:37:16PM +, Francesco Geri wrote:
Salve a tutti,
sono un neofita della programmazione in python, prima d'ora mi sono
sempre limitato a piccoli script o piccole applicazioni. Adesso invece
per la prima volta sono alle prese con un'applicazione più strutturata,
con finestre (gtk), collegamenti a database, scrittura di file ecc.
Il mio problema è banale, ma a causa della mia scarsa esperienza mi sta
creando un po' di problemi. In pratica ho un flusso principale di
istruzioni, che richiama varie funzioni e istanzia varie classi. Ad un
certo punto io istanzio una classe che genera una gtkwindow con una
treeview popolata da una liststore. Vorrei che l'utente finisse di
compilare i vari record della treeview e poi, successivamente al click
in un bottone, i dati salvati nella treeview dovrebbero essere
recuperati e utilizzati nel normale flusso di operazioni. Il problema
mio è che in realtà il flusso non si ferma: la classe viene istanziata,
la finestra generata, i valori recuperati, ma il flusso (che dovrebbe
attendere l'inserimento dei dati da parte dell'utente) non si ferma!
Qualcuno può darmi una diritta su come risolvere questo banalissimo
problema?

non è che banalmente apri una finestra normale invece che un dialog?
Puoi provare a mostrare il codice di come apri la finestra. Per le finestre
normali è corretto che il flusso prosegua.

sandro
*:-)

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


Re: [Python] Sphinx sotto progetti

2013-12-09 Per discussione Alessandro Dentella
On Mon, Dec 09, 2013 at 12:34:56PM +0100, Michele Gatti wrote:
Attualmente ho un file di index solo e un unico file di configurazione,
quindi ho una vista schiacciata dell'albero che mi sono dato come
documentazione.
quello che mi piacerebbe è avere per ogni sotto directory di
documentazione il suo index.html in modo che si navigabile

Se ho compreso bene, quello che chiedi lo puoi ottenere facilmente 
usando la direttiva ``toctree`` nelle sottocartelle. Ad esempio:

.. toctree::
   :maxdepth: 3

   sqlkit/contents

.. toctree::
   :maxdepth: 2

   misc/sqledit

Es a sua volta, cat sqlkit/contencts::

.. toctree::
   :maxdepth: 2

   widgets
   browsing
   editing
   advanced/contents
   ../printing/contents


sandro
*:-)

-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Sphinx sotto progetti

2013-12-09 Per discussione Alessandro Dentella
On Mon, Dec 09, 2013 at 12:54:19PM +0100, Michele Gatti wrote:
Il giorno 09 dicembre 2013 12:48, Alessandro Dentella
[1]san...@e-den.it ha scritto:
 
On Mon, Dec 09, 2013 at 12:34:56PM +0100, Michele Gatti wrote:
Attualmente ho un file di index solo e un unico file di
configurazione,
quindi ho una vista schiacciata dell'albero che mi sono dato come
documentazione.
quello che mi piacerebbe è avere per ogni sotto directory di
documentazione il suo index.html in modo che si navigabile
 
  Se ho compreso bene, quello che chiedi lo puoi ottenere facilmente
  usando la direttiva ``toctree`` nelle sottocartelle. Ad esempio:
  .. toctree::
 :maxdepth: 3
 sqlkit/contents
  .. toctree::
 :maxdepth: 2
 misc/sqledit
  Es a sua volta, cat sqlkit/contencts::
  .. toctree::
 :maxdepth: 2
 widgets
 browsing
 editing
 advanced/contents
 ../printing/contents
  sandro
  *:-)

Anche se ho la doc in un'altra cartella del progetto?


Direi proprio di si! guarda nelle righe sopra l'esempio con printing,
salgo di una cartella e ridiscendo.


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


Re: [Python] [OT] Che distro usate per il vostro desktop (e quale versione)?

2013-12-03 Per discussione Alessandro Dentella
On Fri, Nov 29, 2013 at 05:52:32PM +0100, Karim wrote:
Ciao a tutti, sul fronte linux vorrei chiedervi che distro usate come
desktop. Ora vi sto scrivendo da una ubuntu 13.10, ma ogni volta che
installo una ubuntu nuova, mi rendo conto che forse è meglio usare la
LTS. Inoltre questo unity non mi fa impazzire.
Cosa usate voi?



Ho perso completamente il piacere di configurare il sistema...
Ubuntu con gnome classic e 12 desktop (LTS normalmente anche se in
questo giro ho fatto l'errore di installare la 12.10)

Mi irrita un po' la gestione del fuoco che non è come vorrei. Unity non l'ho
proprio preso in considerazione anche se capisco che studiando la
configurazione forse si tira fuori qualcosa.

Gli shortcut mi vanno abbastanza bene anche se 15 anni fa con fvwm li
gestivo meglio, da file di configurazione ed in modo semplice...

Anche io come altri voglio molti desktop, molti terminali, alcune finestre
di emacs, tutte client di un unico server emacs


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


[Python] Sphinx doc preprocessing

2013-11-25 Per discussione Alessandro Dentella
Ciao a tutti,

uno Sphinx regolarmente e ormai da parecchio. Ultimamamente volevo
aggiungere la possibiità di usare il barrato in particolare nelle liste.

Vari suggerimenti su stackoverflow mostrano come sia suff aggiungere un
'role', degli opportuni css e poi usarla così::

  :strike:`My sentence I want to strike through`

Siccome però voglio usarla principalmente per liste di elementi, mi
piacerebbe avere una scrittura più compatta, in modo da poter scrivere ad
esempio:

  TODO
  
  - fix numero uno
  - fix numero due
  + fix fondamentale

dove l'ultima riga venga preprocessata da Sphinx e trasformata in 

  - :strike:`fix fondamentale`

prima di essere data in pasto a ReST  Co...

Avete idee se e come farlo?


sandro
*:-)


PS: ho anche fatto la domanda su stackoverflow [1] qualche giorno fa, ma
senza grande successo, certo questa lista ha grandi risorse... ;-)


[1] 
http://stackoverflow.com/questions/20075420/how-to-add-strike-through-elements-in-a-list-with-sphinx

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


Re: [Python] Esecuzione dnscmd con python3

2013-10-21 Per discussione Alessandro Dentella
On Mon, Oct 21, 2013 at 03:36:17PM +0200, Marco Buttu wrote:
 On 10/21/2013 12:45 PM, Marco Passanisi wrote:
 
 import subprocess
 output = subprocess.Popen('C:\Windows\System32\dnscmd.exe
 /EnumZones', shell=True, stdout=subprocess.PIPE,
 stderr=subprocess.PIPE)
 
 out, err = output.communicate()
 
 print(err)
 
 Ciao, innanzitutto, come ti hanno detto, dovresti usare delle
 stringhe raw. Pero' il problema non e' questo, perche' sei stato
 fortunato e nessuna delle sequenze di caratterei \x fa parte di una
 sequenza di escape ;)
 Inoltre, quando usi shell=True, la stringa viene eseguita dalla
 shell sottostante, quindi avresti potuto scrivere direttamente:
 
 subprocess.Popen(C:\Windows\System32\dnscmd.exe /EnumZones,  shell=True,...)

no, qui manca ancora la raw string!

  subprocess.Popen(rC:\Windows\System32\dnscmd.exe /EnumZones,shell=True,...)

forse basta anche

  subprocess.Popen(C:/Windows/System32/dnscmd.exe /EnumZones,  shell=True,...)

che a me pare più leggibile. 


sandro
*:-)



-- 
Sandro Dentella  *:-)
http://www.reteisi.org Soluzioni libere per le scuole
http://sqlkit.argolinux.orgSQLkit home page - PyGTK/python/sqlalchemy



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


Re: [Python] Scelta di un IDE

2013-09-26 Per discussione Alessandro Dentella
On Thu, Sep 26, 2013 at 09:30:15PM +0200, Carlos Catucci wrote:
 On 26 September 2013 21:13, Simone Federici s.feder...@gmail.com wrote:
 
  Dalla 3 c'è la versione Free
 
 
 Visto ma continua a non piacermi. IMHO Wing Ide (che ho scoperto avere
 ALCUNE features di SublimeText sulla gestione di testo da tastiera) rimane
 il miglior IDE Python.

ma continui a non dirci perché... il che rende un po' sterile questa
litania.

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


Re: [Python] Scelta di un IDE

2013-09-26 Per discussione Alessandro Dentella
On Thu, Sep 26, 2013 at 11:06:37PM +0200, Carlos Catucci wrote:
 2013/9/26 Alessandro Dentella san...@e-den.it
 
  ma continui a non dirci perché... il che rende un po' sterile questa
  litania.
 
 
 Ma semplicemente perche' fa tutto quello che mi serve. ;)

questo è u ottimo motivo per *usarlo* non per considerare l'altro meno buono.

 Seriamente, io sono da sempre dell'idea che il miglior
 tool/linguaggio/quel-che-vi-pare sia quello con cui vi trovate meglio.
 Io da un IDE chiedo di avere le features che fanno si che mi venga voglia
 di usarlo a scapito della pesantezza rispetto ad un buon editor.
 Tra le tante cose provo ad elencarne alcune
 
 . Supporto per il versioning automatico. Se hai installato Bazaar ti appare
 il relativo menu. Idem per GIT e compagnia
 . Capacita' di eseguire un debugger grafico anche se l'applicativo gira su
 un webserver come Apache o un minimale come quello di manage.py di Django
 . Refactoring semplice e funzionale.
 . Le simpaticissime TAB orizzontali e verticali che mi si aprono e chiudono
 a comando e sono personalizzabilissime.
 
 
 Al momento non ho aperta la VM dove lo ho installato per cui non posso fare
 un elenco di tutte le sue features che me lo fanno preferire. Domani vedo
 se riesco a farvi un tour completo.


Grazie Carlo, io però intendevo perché NON ti piace pycharm e lo reputi così
indietro rispetto a Wing Ide. Non ne ho usato nessuno dei due ma ho visto
PyCharm e ne ho sentito tanto qui, non mi pare faccia molto meno di quello
che dici di Wing Ide.


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


  1   2   3   >