Re: [Python] Un paio di domande (Era: Consiglio su web framework)

2023-06-13 Per discussione Davide Muzzarelli

On 13/06/23 09:18, Giuliano Curti wrote:

1) Connessione db.
Nel mio sistema devo interrogare il DB (eseguo solo interrogazioni 
SELECT) in due punti, due pagine diverse; mi chiedo se sia meglio 
un'apertura iniziale o se al contrario sia meglio aprire e chiudere il 
db quando richiesto?


Scusami, mi sono accorto ora che usi SQLite.

Con SQLite le connessioni in scrittura aprono il database bloccando 
altre connessioni, per cui se hai più processi o thread è necessario 
aprirle e chiuderle ad ogni uso.


Qui puoi approfondire per le connessioni concorrenti:

https://www.sqlite.org/cgi/src/doc/begin-concurrent/doc/begin_concurrent.md

E' meglio usare le connessioni in modalità Context Manager: ci pensa il 
context manager ad effettuare il commit appena finito. Fintanto che il 
commit non è fatto i dati non vengono salvati effettivamente su disco.


Qui hai un esempio:

https://docs.python.org/3/library/sqlite3.html#sqlite3-connection-context-manager

Gentili saluti,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Un paio di domande (Era: Consiglio su web framework)

2023-06-13 Per discussione Davide Muzzarelli

On 13/06/23 09:18, Giuliano Curti wrote:

1) Connessione db.
Nel mio sistema devo interrogare il DB (eseguo solo interrogazioni 
SELECT) in due punti, due pagine diverse; mi chiedo se sia meglio 
un'apertura iniziale o se al contrario sia meglio aprire e chiudere il 
db quando richiesto?


Sarebbe meglio avere un pool di connessioni, così si occupa esso ad 
aprirle solo quando necessario.


Una mia sensazione da niubbo mi fa pensare che meno aperto sta il db, 
meno possibilità di corruzione dei dati, quindi opterei per la seconda 
(apertura e chiusura ogni volta) però è magari una mia sindrome da 
ignoranza.


Non c'è mai corruzione dei dati, ci pensa il DB ad evitarle.

Aprire una connessione è più costoso che usarne una già aperta. La 
migliore ottimizzazione è appunto un pool di connessioni, piccolo o 
grande che sia.



2) Cookies.
Conosco poco l'argomento, ma penso di non doverne far uso e quindi non 
dovrei avere bisogno di segnalazioni all'utente e di richiedere / 
ottenere autorizzazioni.


Se apri il cookie per il solo login allora non hai bisogno del banner, 
inserirai la conferma per la privacy in fase di registrazione dell'utente.


Se apri però un qualsiasi cookie senza che l'utente abbia fatto 
espressamente login allora hai bisogno del banner.


Hai bisogno del banner anche se carichi risorse da altre sorgenti, come 
ad esempio: Google Fonts, CDN di terzi, Google Analytics.


Gentili saluti,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Writing Python like it's Rust

2023-05-24 Per discussione Davide Muzzarelli

On 24/05/23 10:25, Luca Bacchi wrote:

Sono incappato in questo articolo:
[...]
e devo riconoscere che descrive un generale approccio allo sviluppo in 
Python in cui mi sono molto riconosciuto.


Idem!

In pratica la tendenza è quella ad usare il più possibile tutti quegli 
strumenti e quei costrutti che le ultime versioni di Python forniscono 
per, passatemi il termine, rendere Python più nella direzione dei 
linguaggi staticamente tipati. [...]

Nel mio caso mi riferisco soprattutto ai Type Hints e alle dataclasses.


Anche io uso entrambi, è più facile notare errori prima ancora di 
lanciare i test e l'autocompletamento funziona meglio.


Qualcuno direbbe: se pensi che la tipizzazione statica sia migliore 
allora perché non usare Java al posto di Python?


Le differenze tra Java e Python sono ben altre ;)

A parte che dopo JavaScript, Python è il linguaggio con cui sono più a 
mio agio, in realtà penso che la strategia di "sviluppare per 
iterazioni" in cui prima sviluppo e testo se le mie idee sono corrette e 
funzionano; e poi aggiungo i Type Hint e definisco meglio i tipi con 
delle classi o delle dataclasses... In sostanza faccio refactoring e 
irrobustisco ciò che ho fatto, non sua una stratagia che mi dispiace.


Personalmente ragiono top down e scrivo funzioni brevi.

Sviluppo creando rapidamente funzioni e metodi vuoti usando i type 
hints. Mi aiuta a pensare e a intuire il funzionamento più velocemente.


Infine riempio funzioni e metodi, naturalmente implementando i test. Per 
evitare errori commento o salto le chiamate alle parti ancora vuote o 
uso dei mock temporanei.


Qualcuno nella lista si trova nella mia stessa situazione? Pensate anche 
voi che lo sviluppo in Python moderno non possa effettivamente fare a 
meno di questi strumenti?


A me sono utili. A volte prevengono certi tipi di errore ma soprattutto 
mi aiutano a velocizzare e semplificano il processo mentale.


Buona giornata Luca! :)

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


Re: [Python] Consiglio su web framework

2023-05-23 Per discussione Davide Muzzarelli

On 23/05/23 17:08, Carlos Catucci wrote:
On Tue, May 23, 2023, 15:19 Davide Muzzarelli <mailto:dav...@muzzarelli.net>> wrote:


Se è così puoi usare semplicemente la libreria aiohttp senza alcun
framework. Non c'è nemmeno bisogno di un server web di fronte come
Nginx, anche se sarebbe più efficiente nel servire i file.

> [...]

Che figata!!! Grande Davide, come ti vanno le cose?


Grazie Carlos :)

Tutto bene! E' da un po' di anni che ho smesso di usare framework, 
tranne se esplicitamente richiesto dal cliente o se c'è necessità di un 
CMS CRUD tipo Django.


Spesso parlo delle tecniche che utilizzo ai meetup di Modena Full Stack:
https://www.meetup.com/modena-full-stack/

Buona serata,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio su web framework

2023-05-23 Per discussione Davide Muzzarelli

On 23/05/23 09:45, Giuliano Curti wrote:
Questa è un'altra importante considerazione di cui terrò conto; è che 
ieri, iniziando a vedere genropy e flask mi sono sembrati molto 
sovradimensionati rispetto al mio obiettivo.


Se è così puoi usare semplicemente la libreria aiohttp senza alcun 
framework. Non c'è nemmeno bisogno di un server web di fronte come 
Nginx, anche se sarebbe più efficiente nel servire i file.


https://aiohttp.readthedocs.io/

Lo uso sia per piccoli progetti che per sistemi complessi. Non solo è 
tra i più veloci ma è anche popolare, ben manutenuto e stabile.


Per monitorarlo uso Gunicorn (in modalità async con il velocissimo uvloop):

  gunicorn server:app --worker-class aiohttp.GunicornUVLoopWebWorker

Dove "server" è il file "server.py" e "app" è la variabile che contiene 
l'applicazione aiohttp.


In sviluppo aggiungo questo flag:

  --reload

Le dipendenze che uso sono pressoché solo queste:

aiohttp
asyncpg (preferisco Postgres che è leggero anche su di un Raspberry Pi)
gunicorn (mantiene l'applicazione attiva e la riavvia se necessario)
jinja2 (template engine che uso per HTML, email e SQL)
marshmallow (per validare sia form che JSON)
uvloop (rende async ancora più veloce)

Buona giornata,
Davide Muzzarelli
___
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 Davide Muzzarelli

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/


Personalmente, dei sistemisti che usano Docker in produzione, non 
conosco nessuno che si attenta ad usarli anche per i database.


Buon lavoro,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Ricerca Azienda/Sviluppatori App + Backend python

2019-09-06 Per discussione Davide Muzzarelli

Il 06/09/19 10:46, Ernesto Arbitrio ha scritto:
       vi scrivo perché sto cercando urgentemente una azienda che si 
occupa di sviluppo di app mobile native android e iOS, compreso il 
backend lato server. Una startup (ICEcall) ha recentemente ricevuto un 
finanziamento per lo sviluppo di un app per dispositivi mobili in grado 
di gestire e semplificare le chiamate di emergenza medica durante il 
processo di primo soccorso.
Cercano un azienda strutturata o un team già rodato in grado di seguire 
lo sviluppo del progetto e di fornire assistenza continuativa 
(deployment, testing, maintenance).


Ciao Ernesto,
conosco una piccola ditta specializzata su app native per entrambe le 
piattaforme, hanno un team e lavorano molto bene.


Scrivimi pure a dav...@webforce.it
Mi trovi anche su Skype: davmuz

Gentili saluti,
Davide Muzzarelli
   - - -
http://www.muzzarelli.net/
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Flask tutorial

2019-07-03 Per discussione Davide Muzzarelli

Il 02/07/19 23:42, Mario ha scritto:
mi sono accostato a Python e alla programmazione di recente e vorrei 
qualche consiglio da principiante.
Per ora sto seguendo questo testo, che mi sembra ben fatto 
https://automatetheboringstuff.com/


Vorrei anche imparare ad usare Flask, ma i tutorial che ho trovato 
fin'ora sono un po' troppo avanzati e presuppongono conoscenze che non 
ho ancora. Voi riuscireste a consigliarmene uno alla portata di un 
principiante a digiuno di tutto?


Ciao Mario,
dato che parti da zero ti consiglio invece di seguire passo passo il 
tutorial ufficiale di Python, che è fatto molto bene 
https://docs.python.org/3/tutorial/index.html


Nel tuo caso userei un framework ancora più semplice, tipo Bottle, 
perché hai già troppo da imparare. Ha un tutorial semplice e contiene 
tutto ciò che ti serve per fare un intero sito o applicazione web 
https://bottlepy.org/docs/dev/


Davide Muzzarelli
   - - -
http://www.muzzarelli.net/
___
Python mailing list
Python@lists.python.it
https://lists.python.it/mailman/listinfo/python


Re: [Python] Quale IDE

2017-07-02 Per discussione Davide Muzzarelli

On 02/07/2017 09:49, Enrico M. wrote:

A parte vim, ho dato un occhiata a Thonny, che non mi sembra affatto
male per chi comincia come me, ed ho sentito parlare bene di Wing.


TL;TR: personalmente uso Wing (che consiglio) e ripiego su VIM per le 
sessioni remote. La versione Personal è ottima e gratuita.



Wing è stato il primo IDE completamente implementato in Python e 
specializzato proprio per questo linguaggio, inoltre il supporto è 
ottimo e gli aggiornamenti sono sempre frequenti. PyCharm e Sublime Text 
sono arrivati anni dopo.


Una volta all'anno faccio una revisione dei maggiori editor per vedere 
se ci sono dei miglioramenti.


Penso che i migliori per Python siano Wing, VIM, PyCharm, Sublime Text, 
Visual Studio Code e Atom. Eclipse e Komodo ormai non li considero più 
perché sono da sempre troppo pesanti.


Sublime Text ha scarso supporto, Atom è troppo lento, Visual Studio Code 
è leggermente acerbo ma con un ottimo potenziale.


Quest'anno devo ancora fare il consueto giro di prova con PyCharm. Fino 
all'anno scorso era indietro rispetto a Wing, più lento e costoso. E' 
probabile che ora abbia finalmente colmato il gap.


My 2¢,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Framework e-commerce

2017-04-11 Per discussione Davide Muzzarelli

On 11/04/2017 18:36, Piergiorgio Pancino wrote:

volevo avere qualche indicazione su un possibile framework per
realizzare un sito di e-commerce.
Che opzioni ci sono?Quali utilizzate? Quali consigliate?


Ciao Piergiorgio,
ho esperienza di ecommerce, personalmente ti consiglierei Django perché 
di base ha già tutto ciò che serve (i18n, ORM, form, sicurezza...) e una 
quantità di plugin per molte funzionalità più avanzate.


Come database ti consiglierei Postgresql.

Se però devi fare concorrenza a Magento e simili ti consiglio di lasciar 
perdere, a meno che tu non abbia molte risorse di tempo e di denaro. Un 
vero sito di ecommerce necessita di molte funzionalità peculiari ed è 
anche particolarmente complesso da progettare, meglio affidarsi ad una 
soluzione già pronta.


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


Re: [Python] python 2-3 e CGI

2017-04-08 Per discussione Davide Muzzarelli

On 06/04/2017 21:03, Franky gmail wrote:

Chiedo subito un parere in merito alla creazione di un portale che farà
tantissime query su db mysql2.6 (il perchè della versione lo spiegherò
magari dopo)
le risorse che userò saranno python2.7 mysql2.6 apache2.
Tengo a precisare che ho delle discrete conoscenze dei summenzionati
'prodotti' e ho già pronta la lista della spesa (PIL, connettori per db
ecc). Il solo dubbio che mi rimane e il modulo da usare (CGI, mod-python
o fast-cgi) i predetti moduli mi servono per interagire con la parte
grafica.


CGI è lento perché esegue lo script da capo ad ogni singola richiesta.

mod_python è inefficiente.

FastCGI va bene, WSGI sarebbe più adatto a Python.


Anticipo che non intendo utilizzare alcun framework (zope, jango ecc).


Se non vuoi un framework puoi utilizzare la libreria Werkzeug, è solida 
e performante. Anni fa fa ci ho costruito sopra un framework e mi sono 
trovato bene.


http://werkzeug.pocoo.org/

Diversamente puoi utilizzare direttamente WSGI con uWSGI o Gunicorn. 
Entrambi mettono a disposizione non solo l'interfaccia uWSGI ma anche il 
sistema per gestire i processi. Sono molto performanti, Gunicorn l'ho 
trovato più stabile.


https://github.com/unbit/uwsgi

http://gunicorn.org/

Bjoern sembra invece il sistema WSGI in assoluto più veloce. E' scritto 
in C ma non l'ho mai provato.


https://github.com/jonashaag/bjoern


A questo punto se vuoi prestazioni migliori a livello di stack 
bisognerebbe passare a:

- Python > 3.4: per via della nuova libreria AsyncIO;
- Postgresql: sfrutta meglio CPU multiple e puoi organizzare meglio i 
dati per un accesso più veloce;
- Nginx: è meno completo ma più veloce di Apache (nulla vieta di usarli 
contemporaneamente);
- Redis: per dati temporanei di frequente accesso (tipo le sessioni o il 
rate limiting) e funge anche da cache.


Buon w/e,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Software per creare grafici UML su mac

2017-01-10 Per discussione Davide Muzzarelli

On 10/01/2017 11:49, Karim wrote:

Cosa usate per fare grafici uml su mac?


Prova Umbrello, gira anche su Mac.

https://umbrello.kde.org/

https://www.macports.org/ports.php?by=name=umbrello

 - - -
Davide Muzzarelli
___
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 Davide Muzzarelli

On 01/12/2016 09:02, Fundor333 wrote:

Io attualmente uso PyCharm come ide per sviluppare in python quando
faccio dei progetti ma mi trovo scomodo per quanto riguarda modifiche al
volo di uno script o frammenti di codice lo trovo estremamente lento.
Voi che programma usate per le modifiche al volo? Attualmente lo faccio
con nano ma non è una mia prima scelta...


Anche io avevo trovato PyCharm molto lento.

Per Python uso WingIDE, Kwrite per modifiche veloci.

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


Re: [Python] [OT] Mail di Enrico Bianchi in spam

2016-03-14 Per discussione Davide Muzzarelli

On 14/03/2016 16:28, Kbyte wrote:

Altri utenti Gmail che seguono la lista hanno lo stesso problema?


Per forza che finiscono nello spam, il suo dominio non ha il record SPF 
e il suo name server non è nella lista del parent name server.


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


Re: [Python] Why Go is not good

2015-07-17 Per discussione Davide Muzzarelli

Il 17/07/2015 14:38, Carlos Catucci ha scritto:

Adesso mi spieghi questa, a me povero 'gnurant. Come puoi avere un if
senza espressioni booleane? Al massimo sono piu' espressioni combinate
tra loro con operatori logici ma sempre booelane sono.


Intende che puoi fare:

a := true // Variabile booleana
if a {
...
}

e che invece non puoi fare:

b := nil // Sarebbe un None in Python
if b { // Errore!
...
}

e nemmeno:

c := 1
if c { // Errore!
...
}


Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Why Go is not good

2015-07-17 Per discussione Davide Muzzarelli

Il 17/07/2015 14:50, Carlos Catucci ha scritto:

non avrebbe senso. Potrei farlo solo se avessi un

a = True o a = False


Forse intendi:

if a is True:
...

altrimenti è esattamente come se facessi:

if a:
...

proprio perché il seguente if risulterà vero:

a = 1
if a == True:
...

Il motivo è che il primo if controlla anche il tipo mentre gli altri due no.

Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Why Go is not good

2015-07-17 Per discussione Davide Muzzarelli

Il 17/07/2015 15:13, enrico franchi ha scritto:

In realta' il primo e' anche il piu' broken. Dalla PEP8:

  *

Don't compare boolean values to True or False using == .

Yes:   if greeting:
No:if greeting == True:
Worse: if greeting is True:


Nel suggerimento la differenza tra Yes e No è solo sintassi. Il 
terzo caso invece non è affatto sintassi e lo usi quando vuoi essere 
sicuro anche del tipo.


Diventa worse se usi l'is quando non serve, ovvero nella maggioranza dei 
casi.


Può darsi che io abbia intuito male cosa volesse fare Carlos.

Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Migrazione da 2 a 3.

2015-07-15 Per discussione Davide Muzzarelli

Il 15/07/2015 15:59, Gabriele Battaglia ha scritto:

Chiedo una vostra opinione, cosa mi consigliereste, quale lettura, per
un primo e non completo sguardo alle differenze fra python 2 e 3?
[...]
Ecco, dov'è la miglior lista di tutti questi piccoli cambiamenti...
senza la pretesa di un documento completo, giusto per un primo assaggio.


Ciao Gabriele,
vai sulla documentazione di Python (es. https://docs.python.org/3/) e 
leggi il capitolo What's New In Python 3.4. Lì troverai tutte le 
differenze spiegate in maniera egregia.


https://docs.python.org/3/whatsnew/3.0.html
https://docs.python.org/3/whatsnew/3.1.html
https://docs.python.org/3/whatsnew/3.2.html
https://docs.python.org/3/whatsnew/3.3.html
https://docs.python.org/3/whatsnew/3.4.html

Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

2015-07-12 Per discussione Davide Muzzarelli

Il 12/07/2015 19:26, enrico franchi ha scritto:

Tipo... 90.000 connessioni aperte simultaneamente? Ma dai, diciamo
proprio di no. Non e' che non *puoi* farlo. E' che e' proprio una
cattiva idea farlo *a meno che non devi proprio farlo*. Tipicamente
tutte le volte che assumi che qualcosa sia gratuito e illimitato, prima
o poi qualcuno ti fara' scoprire che non e' cosi' (corollario: di solito
questa cosa accade in un'altra time-zone, quando uno avrebbe preferito
dormire invece di scoprire nuove cose).


Non c'è alcuna spiegazione su come deve funzionare il sistema di Carlos 
per cui sono stato molto generico. Ho giusto scritto cosa Go può 
raggiungere senza troppo sbattimento, chiaramente a scopo di paragone 
con Python.


Dipende da quale è il suo bisogno, ha parlato di alcune decine di 
migliaia di router da gestire. Se è un progetto serio avrà un budget e 
l'aiuto di colleghi, eventualmente un sistemista. Ovvio che si può fare 
distribuendo il carico su più server, che è probabilmente la soluzione 
migliore sotto diversi punti di vista, non c'è bisogno di correre di notte.


Questo tizio ha raggiunto 600.000 connessioni per processo con 16GB di 
RAM e il vecchio Go 1.0.3, che è molto più di 90.000 connessioni. Il GC 
da allora è migliorato sensibilmente:

https://groups.google.com/forum/#!searchin/golang-nuts/Garbage$20collecting/golang-nuts/S9goEGuoMRM/FZyd2M6uiVMJ


In generale e'
davvero molto piu' semplice usare logiche di pool rispetto che fare
90.000 goroutine.


Sono d'accordo. A Qihoo 360 hanno comunque raggiunto 1 milione di 
connessioni/server prima di passare ai pool, sempre con Go 1.0.3.


Dubito che Carlos debba creare un sistemone del genere, probabilmente 
gli basta molto ma molto meno.



Tipicamente se uno fa ste cose a cuor leggero la prima
cosa che scopre e' che ha un problema con il garbage collector, per dire.


Basta fare una spike solution per vedere quali numeri ottiene. Python mi 
pare meno adatto per queste cose, se lo deve fare con quello 
probabilmente si trova con limiti ancora maggiori.



  Puoi usare tutte le CPU a disposizione fin da subito senza
scrivere codice aggiuntivo.

Ora... il codice aggiuntivo e' piccolo, ma di per se Go 1.4 se non gli
dici altrimenti usa *una* CPU.


Hai ragione, è una riga di codice all'inizio del programma per dire 
quante CPU usare. Quello che intendo è che non deve modificare come 
funziona il proprio codice, tipo per usare il multiprocessing in Python.


Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

2015-07-12 Per discussione Davide Muzzarelli

Il 12/07/2015 19:42, Carlos Catucci ha scritto:

Chiamare Go da Python. Cosi' le parti critiche potrebbero essere gestite
da Go e le cose che faccio meglio in Python le faccio in Python appunto.


Si perderebbero molte performance convertendo i dati da un ambiente 
all'altro. Dubito che convenga farlo.


Puoi comunque mettere in piedi una queue con RabbitMQ, oppure in maniera 
più leggera con Redis, e creare dei worker in Go.


Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

2015-07-11 Per discussione Davide Muzzarelli

Il 10/07/2015 21:27, Carlos Catucci ha scritto:

Scusa solo per capire, dov'e' la differenza con try except? E comunque
tu indich defer (non lo conosco bene) subito dopo avere aperto. Implica
che verra' eseguito COMUNQUE (tipo finally per capirci) alla fine della
funzione? Se si e' davvero una cosa buona.


E' come in finally, con la differenza che puoi metterli nel punto dove 
preferisci e non devi creare dei livelli d'identazione quando ne devi 
creare più di uno. In sostanza sono più comodi e semplici da utilizzare 
rispetto ai finally.



  Go è un linguaggio che ha i suoi difetti ma sono veramente pochi,
anche Python e C hanno i loro difetti eh.

Beh nessuno e' perfetto (tranne Andy ;P).


:)


Comunque si penso che per
certe cose sia interessante. Gia' intendevo riscrivere con Flask i web
services del progetto. Se i boss non mi farranno girare le palle al
punto da essere sfanculati, potrei pensare di ricriverene una buona
parte in Go. In particolair quelli che gestiranno le
connessioni/disconnessioni degli utenti sui router. (*)



* Trattasi di rete wifi free dove chi entra si connette come se fosse la
rete di casa. Questo comporta che io debba far registrare dati
provenienti dai vari router (si conta a progetto avviato di averne
qualche decina di milgiaia) tutti i casi di connessione/disconnessione
che potrebbe essere un problema non da poco con Python (ce la fara' a
reggere? Potrebbero arrivare in pochi secondi un numero elevatissimo di
segnalazioni).


Go sarebbe adatto per quel progetto.

Ogni gorutine (simile ai thread) occupa 4kb. In 350MB di RAM puoi 
gestire circa 90.000 connessioni aperte simultaneamente. Puoi usare 
tutte le CPU a disposizione fin da subito senza scrivere codice aggiuntivo.


Sicuramente farai prima a scriverlo in Python che in Go, anche perché 
dovresti imparare ad usarlo. Valuta tu se hai bisogno di quelle performance.


Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

2015-07-11 Per discussione Davide Muzzarelli

Il 11/07/2015 19:09, Simone Federici ha scritto:

per te, che lo scrivi ma il codice è letto in media 50 volte in piú a
quanto viene scritto.


Il fatto è che scrivendo metti il defer nel posto migliore a livello 
logico proprio dove te lo aspetteresti. Le funzioni in Go tendono ad 
essere piuttosto corte e bisogna tenere conto anche di questo.



e avere un try finally che puoi mettere a caso nel codice non mi sembra
una buona pratica


La maniera più naturale è mettere il defer nel posto giusto, per 
scriverlo in un posto a caso bisogna proprio farlo apposta.



ps: io sono più x i context manager che supportano un unico punto di
indentazione anche usati multipli


Concordo che context manager sono una gran cosa! :)

Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

2015-07-11 Per discussione Davide Muzzarelli

Il 11/07/2015 19:02, Simone Federici ha scritto:

molto molto fico, lo compro :-)


LOL :D


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


Re: [Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

2015-07-11 Per discussione Davide Muzzarelli

Il 11/07/2015 15:50, Enrico Bianchi ha scritto:

Per capire, cosa intendi?


Una traduzione sommaria e imprecisa dello zen di Python, che avrei 
potuto fare meglio :p


I metodi in Go sono alla stessa indentazione delle classi, in 
effetti si tratta di funzioni collegate a strutture.


Lo stile idiomatico di Go incoraggia l'uso di funzioni piccole, moduli 
altrettanto piccoli molto specializzati e aggregazione. Le interfacce, 
come sono pensate in Go, aiutano molto il riuso di codice in grandi 
progetti.


Alla fine ci si ritrova in maniera naturale ad avere pochi livelli 
d'indentazione, funzioni con pochi argomenti e moduli con poche strutture.


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


Re: [Python] Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG

2015-07-10 Per discussione Davide Muzzarelli
 dai tool forniti col compilatore 
(avere uno standard di questo genere è una manna dal cielo per i 
software scritti da molte persone), la compilazione semplifica 
notevolmente i deploy, la tipizzazione statica previene numerosi bug, il 
garbage collector e le interfacce generiche aiutano a guadagnare un 
sacco di tempo evitando nel contempo stack overflow e compagnia bella, 
il ridotto uso di memoria è fondamentale quando si scalano le 
applicazioni (ci sono team che hanno ridotto i server di un ordine di 
potenza rispetto a Python/Ruby), le performance sono molto vicine a 
quelle del C (e continuano a migliorare).


La filosofia di base è molto simile a quella di Python e di Unix:
- Piccoli componenti altamente specializzati
- Esplicito è meglio che implicito
- Piatto è meglio che annidato
- Sparso è meglio che denso
- La leggibilità conta (per questo Go ha un tool per pulire il codice)
- Grande praticità al posto di grandi filosofie
- Gli errori dovrebbero essere sempre espliciti (infatti gli errori sono 
passati come valore, se si vuole vanno esplicitamente ignorati al 
contrario che con Python)

- Aggregazione
- Namespace
- Semplicità (Python 3 non mi pare abbia ormai perso questa caratteristica)
- Un solo modo di fare le cose

Per rispondere alla domanda sulla mission, ecco un elenco delle cose 
dove Go eccelle:

- API (sia client che server)
- Applicazioni ad alta parallelizzazione e concorrenza
- Applicazioni server di elaborazione dati da molti utenti (es. 
map-reduce, elaborazione di immagini, parsing di testi, conversione di 
dati ecc.)

- Programmi a linea di comando
- Sistemi in genere (vedi Docker, Reborn, Doozer, Juju, Vitess, Dropbox, 
CloudFlare e tanti altri) tranne i sistemi operativi e le applicazioni 
in real-time (presto sarà possibile fare del soft-real-time)

- Database distribuiti

La community è in forte crescita ed è decisamente facile leggere il 
codice scritto da un'altra persona. Python ha una sintassi ancora più 
leggibile ma i programmi scritti in Python non sono altrettanto facili 
da comprendere come quelli in Go.


In pratica sostituisce bene Python in tutte quelle situazioni dove sono 
richieste performance, basso consumo di risorse, stabilità e 
manutenzione di medi o grossi sorgenti. Lo scotto da pagare sono i tempi 
di sviluppo maggiori di circa il 50%.


Sostituisce bene C in tutte quelle situazioni dove la velocità di 
sviluppo è importante quanto le performance e dove il progetto è di 
grandezza media o alta.


Go è un linguaggio che ha i suoi difetti ma sono veramente pochi, anche 
Python e C hanno i loro difetti eh.


Detto questo continuerò a scrivere siti web in Python e applicazioni web 
in Go ;)


Buona serata,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Consiglio per l' implementazione

2015-06-17 Per discussione Davide Muzzarelli

Il 17/06/2015 11:35, Matteo Scarpa ha scritto:

Il lato server che fa il parsing lo farei in python perché lavora meglio
del Java con i file html ma oltre a Beautifullsoup non conosco moduli
per questo genere di cose. Ci sono alternative migliori? Sto sbagliando
tutto? Esiste un modulo python che fa il parsing e lo esporta
direttamente in json?


Ciao Matteo,
puoi usare Scrapy ed esportare in JSON o in qualsiasi altro formato.

http://scrapy.org/

Fare lo scraping più richiedere diversi minuti, a seconda delle 
condizioni della rete, dei tempi di risposta e del numero di pagine da 
scaricare.
A meno che tu non debba scaricare i dati da poche semplici pagine, 
conviene che questa operazione venga fatta in maniera asincrona. A fine 
scraping devi quindi avvisare l'app che i dati sono pronti.


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


Re: [Python] Mono in Unity 3D, Opus, FLAC (era: Re: Sviluppare in python 2 o python 3)

2015-06-09 Per discussione Davide Muzzarelli

Il 09/06/2015 10:39, Nicola Larosa ha scritto:

Tra l'altro, se state ancora usando Ogg Vorbis o MP3 (bleah) per la
musica, e Speex o altro per la voce, passate a Opus.:-)


+1 :)

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


Re: [Python] Sviluppare in python 2 o python 3

2015-06-09 Per discussione Davide Muzzarelli

Il 09/06/2015 09:53, Carlos Catucci ha scritto:

Aspetta aspetta che intendi dire usando QT?


Con QT hai non solo un ambiente grafico omogeneo e completo sui tre OS 
(Linux, Windows e Mac). In aggiunta ottieni anche un framework con 
librerie multipiattaforma che ti aiutano a lavorare meglio.



Vuoi dire sviluppo mobile
per le tre piattaforme principlai in PyQT?


Se intendi mobile:
Android http://wiki.qt.io/PySide_for_Android_guide
Blackberry http://blackberry.github.io/Community/Python.html
Per iOS dovrebbe essere fattibile in qualche modo con QML e un po' di 
C++/Obj-C.


Per mobile eventualmente c'è anche questo, ma non so quanto è maturo:
http://kivy.org/

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


Re: [Python] Sviluppare in python 2 o python 3

2015-06-09 Per discussione Davide Muzzarelli

Il 09/06/2015 09:25, Carlos Catucci ha scritto:

.NET ha il solo limite di essere una cosa che gira (bene) solo in
ambiente m$. Ho idea che se fosse multiplatform sarebbe pero' anche meno
performante.
Non si puo' avere tutto dalla vita.


Si può usare Mono 
http://www.mono-project.com/docs/getting-started/application-portability/ anche 
se non tutte le librerie sono complete.


Byez,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Sviluppare in python 2 o python 3

2015-06-09 Per discussione Davide Muzzarelli

Il 09/06/2015 09:36, Carlos Catucci ha scritto:

C# non lo trovo (va bene io come VS sono fermo alla 3.5) malvagio, e'
quello che Java avrebbe potuto essere se lo avessero progettato fin
dall'inizio con le idee chiare.


Concordo.

Per sviluppare multiplatform, con GUI, ho visto usare Lua ma anche 
Node.js (b).


Naturalmente Python va benissimo specialmente usando QT e 
pacchettizzando tutto un po' come fa anche Dropbox (il client di Dropbox 
è scritto in Python 2).


Gentili saluti,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Sviluppare in python 2 o python 3

2015-06-08 Per discussione Davide Muzzarelli

Il 08/06/2015 21:42, Matteo Scarpa ha scritto:

perché si sviluppano ancora applicazioni in python 2.qualcosa
(ovviamente a meno di necessitá particolari tipo la libreria c'é solo
per quella specifica versione) ripsetto che a una 3,qualcosa? É una cosa
prettamente di guisti/abitudine o c´é qualcosa sotto?


Ciao Matteo,
cerco di essere il più sintetico possibile, i pignoli in lista non me ne 
vogliano se lascio margini d'imprecisione nella risposta ;)


Premetto che lavoro su progetti web o che hanno a che fare col web. In 
questo ambito è desiderabile poter soddisfare il numero più alto 
possibile di richieste al secondo utilizzando il minimo possibile di RAM.


Stiamo rimanendo su Python 2 per i seguenti motivi, rispetto a Python 3:
- Python 2 è più veloce.
- Python 2 consuma meno memoria.
- Ancora non tutte le librerie che ci servono sono supportate su Python 
3 e quelle supportate spesso mancano di qualcosa pur di mantenere una 
certa retrocompatibilità (anche solo una libreria importante può 
bloccare una migrazione).
- In Python 3 si è persa l'opportunità di fare una buona implementazione 
di Unicode per cui non si vedono vantaggi nel passaggio.
- Python 3 è considerato pienamente maturo dalla versione 3.4, che è 
relativamente recente.
- La migrazione 2to3 funziona solo parzialmente bene con Python 3.5, ci 
sono diverse cose da fare a mano per migrare un'intera applicazione e 
non si può fermare tutto il business nel frattempo.


Per fare un cambio di versione così importante non è sufficiente la 
motivazione perché Python 3 è più recente, ci vuole almeno un benefit 
veramente importante non raggiungibile diversamente per poter 
giustificare i costi di migrazione.
Per inciso, non ha senso migrare se non c'è un beneficio tangibile e 
consistente a livello di fatturato, in modo da compensare i costi di 
migrazione e dare un vantaggio competitivo. Piuttosto è meglio 
continuare a supportare il software su Python 2 per qualche anno e poi, 
eventualmente, approfittare dell'occasione per rivedere l'applicazione.


Per alcuni progetti sto passando a Go invece che a Python 3, questi sono 
i benefit che percepisco come importanti:

- Tipizzazione statica, errori in fase di compilazione invece che a runtime
- Binario compilato senza dipendenze esterne (deploy facile)
- Tempi di compilazione minimi (spesso meno di quanto ci mette Python a 
partire)

- Garbage collector sufficientemente buono
- Unicode
- Facile da imparare anche per i junior, seppur non facile quanto Python
- Indicativamente 10 volte più performante di Python
- Indicativamente 10 volte meno memoria consumata rispetto a Python
- Comodo per gestire concorrenza e parallelismo

Buona serata,
Davide Muzzarelli
___
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python


Re: [Python] Presentazione

2015-06-05 Per discussione Davide Muzzarelli

Il 05/06/2015 07:22, Carlos Catucci ha scritto:

Puo' essere. Io ci sono vissuto (e la considero la cosa piu' vicina a
casa in questo continente) dal 94 al 2013. E spero di tornarci presto.


Magari passa a trovarci, c'è sempre una birra in fresco per te ;)

A proposito, un saluto a tutti, è da parecchio tempo che non bazzico qui 
in giro :)


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


Re: [Python] Presentazione

2015-06-05 Per discussione Davide Muzzarelli

Il 05/06/2015 14:21, Carlos Catucci ha scritto:

E' che sono impegnato giu' in un progetto, e mi spiacerebbe mollare i
boss a meta' strada. Ma dopo mi sa che rivaluto opportunita'.


Niente scuse, nemmeno se sei astemio puoi rifiutare una birra in 
compagnia! :D


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