Re: [Python] Un paio di domande (Era: Consiglio su web framework)
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)
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
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
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
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...
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
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
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
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
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
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
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&substr=umbrello - - - Davide Muzzarelli ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Scelta dell'ide al volo
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
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] Estendere Python in Go (era: Re: Parere su Go di un professore di informatica (delle superiori) nonche' uno dei fondatori di ERLUG)
Il 26/08/2015 15:39, Carlos Catucci ha scritto: A me serve solo un piccolo caso di concorrenza, la gran parte della roba sono webservice che rispondono a chiamate ajax e un poco di roba diciamo "gestionale". Per i primi potrei anche farli con Go, ma poi perdo i vantaggi dell'ORM di Django (o di SqlAlchemy) visto che i webservice gerstiscono basi dati spesso sparse su diverse tabelle. Dubito che tu riesca a risolvere il problema in maniera efficace usando Go come libreria. IMO fai prima ad usare Python scrivendo SQL diretto per le poche query che necessitano veramente di prestazioni. Se devi distribuire il carico probabilmente è meglio usare RabbitMQ invece che utilizzare i thread di Python o di Go, così puoi anche sfruttare la potenza di altri server. In questo modo hai buone prestazioni e niente di nuovo da dover studiare. Davide Muzzarelli ___ Python mailing list Python@lists.python.it http://lists.python.it/mailman/listinfo/python
Re: [Python] Why Go is not good
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] Why Go is not good
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
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] Migrazione da 2 a 3.
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
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
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
Il 12/07/2015 09:10, Carlos Catucci ha scritto: > Che voi sappiate qualcuno sta usando Go per scrivere software di sistema "famosi" (o noti, con buone prospettive) ? Qualcuno ha risposte? La domanda scaturisce dal discorso C vs Go, con il primo usatissimo ancora per scrivere OS o sistemi embedded. Go non è adatto a scrivere sistemi operativi. Ecco qui di seguito una lista non ordinata. Alcune sono molto famose nei loro settori specifici quindi è probabile che quei ragazzi non ne abbiano mai sentito parlare. - Baidu: il famoso motore di ricerca cinese - Qihoo 360: ~1.1 miliardi di utenti in Cina - Docker, Etcd, Fleet e altri sistemi correlati - Database come Bolt, InfluxDB, RebornDB ecc. - Canonical: JuJu - CloudFlare: Railgun - SoundCloud - Dropbox: le parti critiche della loro infrastruttura, continuano ad usare Python per tutto il resto altrimenti Guido si arrabbia :D - Google: download server, alcuni sistemi di gestione del cloud e chissà quali altri progetti segretissimi ;) - Youtube: Vitess - BBC World News: vari servizi come crawler, web services e backend per i giochi - Heroku: Doozer e altri loro sistemi sia interni che open source - Iron.io - Splice - Nokia: si sa solo di tool interno per testare l'hardware - Pivotal: CloudFoundry - Apcera: il 95% dei loro sorgenti è scritto in Go - Twitch: 45 milioni di giocatori al mese - StatHat - Square (POS virtuale) - Cloud66 - Rackspace: Airbrake - 99designs - Digital Ocean - Disqus - Tumblr - DNSSimple - dotCloud - SendGrid: hanno migrato dal Perl - GitHub - Zynga - gov.uk - Mozilla: alcuni tool e servizi - New York Times: servizi di backend e API web - Percona: agente per monitorare i database in cloud - Bitbucker: in sperimentazione - VividCortex La maggioranza di questi sono migrati da Python e Ruby, altri hanno evitato di dover riscrivere grosse parti in C grazie a 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
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
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
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
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
da usare rispetto a Python/Ruby. Go è una via di mezzo tra il C e il Python, attrae molti più programmatori da Python che da C/C++. La sintassi è semplice con pochi costrutti, molto chiara, il codice viene pulito e identato direttamente 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
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)
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
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
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
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
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
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
Re: [Python] Presentazione
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