GAE python GDG Milano - L02

18
App Engine Take Off Marzo 2015 Python Il framework: webapp2 GDG Milano - Paolo Dadda - 2DWeb Milano, 26 marzo 2015 @TalentGarden, Via Merano, 16 #gae #gdgmilano

Transcript of GAE python GDG Milano - L02

Page 1: GAE python GDG Milano - L02

App Engine Take OffMarzo 2015PythonIl framework: webapp2

GDG Milano - Paolo Dadda - 2DWebMilano, 26 marzo 2015 @TalentGarden, Via Merano, 16

#gae #gdgmilano

Page 2: GAE python GDG Milano - L02

Marzo 2015Google App Engine

PythonIl framework: webapp2

#gae #gdgmilano

Paolo Dadda

Membro IWA ITALY nr. 0307429 Professionista Web ai sensi della Legge 4/2013

Contatti:Tel.: 393.4298004

Ufficio: Via 4 Novembre, 94 Cislago (VA) WebSite: www.2dweb.it

Mail: [email protected]

Page 3: GAE python GDG Milano - L02

Cosa vedremo oggi?

- Un sito di esempio (una base)- Organizzazione del codice- Il framework Webapp2

- CodeLab !Verrà inoltre rilasciato il codice per “essere sempre tutti allo stesso punto”

Piano delle lezioni Lezione 1 (Febbraio 2015)

Introduzione Lezione 2 (Marzo 2015)

WebApp2 & Basi per uso di Model, Template, Handler Lezione 3 (Aprile 2015)

Handler, Mail, Get, Post, Upload Lezione 4 (Maggio 2015)

Model, Memcache Lezione 5 (Giugno 2015)

Template, Jinja2, Exception Lezione 6 (Luglio 2015)

Blobstore & Google Cloud Storage

Page 4: GAE python GDG Milano - L02

Cosa succede se “prendete in mano” un codice scritto da voi tempo fa?

Page 5: GAE python GDG Milano - L02

Se la sensazioneè questa… …parliamone !

Page 6: GAE python GDG Milano - L02

Python, il codice, ed un certo ordine

• Scrivere e tenere i file di progetto ordinati è importante

• Un ordine logico può aiutarci a sistemare un problema o modificare una parte di codice anche a distanza di tempo

• Un codice ordinato è più veloce da mantenere, da scrivere, da gestire e da guardare, sia per noi che per gli altri.

• Nota: Ottimizzare non significa necessariamente scrivere meno righe di codice

Page 7: GAE python GDG Milano - L02

Lo Zen di Python

No, non sto scherzando…

esiste! potete provarlo anche da soli:

da terminale:

python

>>> import this

Page 8: GAE python GDG Milano - L02

Lo Zen di Python• Beautiful is better than ugly

(Bello è meglio di brutto)

• Explicit is better than implicit (Esplicito è meglio di implicito)

• Simple is better than complex. Complex is better than complicated (Semplice è meglio di complesso. Complesso è migliore di complicato)

• Flat is better than nested (Meglio piatto di innestato)

• Sparse is better than dense (Sparso è meglio di denso)

• Readability counts (La leggibilità conta)

• Special cases aren’t special enough to break the rules although practicality beats purity (I casi speciali non sono abbastanza speciali da infrangere le regole anche se la praticitità sconfigge la purezza

• Errors should never pass silently. Unless explicitly silenced (Gli errori non devono mai essere ignorati, a meno che non siano da ignorare esplicitamente)

Page 9: GAE python GDG Milano - L02

Lo Zen di Python• In the face of ambiguity,

refuse the temptation to guess (Di fronte all’ambiguità, fuggi la tentazione di indovinare)

• There should be one and preferably only one obvious way to do it. Although that way may not be obvious at first unless you’re Dutch (Ci dovrebbe essere uno e preferibilmente un solo ovvio modo per farlo. Anche se quel modo potrebbe non essere ovvio a prima vista a meno che tu non sia olandese)

• Now is better than never. Although never is often better than *right* now (Ora è meglio di mai. Anche se “mai” è spesso *meglio* di subito)

• If the implementation is hard to explain, it’s a bad idea. If the implementation is easy to explain, it may be a good idea. (Se l’implementazione è difficile da spiegare, è una cattiva idea. Se è facile da spiegare, potrebbe essere una buona idea)

• Namespaces are one honking great idea,let’s do more of those! (I namespaces sono una buona idea, creiamone di più!)

Page 10: GAE python GDG Milano - L02

La nostra struttura

• I file statici sono tutti in un’unica cartella.

• I template, sono divisi dal resto del progetto.

• le librerie esterne sono raccolte in un unico posto.

• i file di progetto hanno un senso ed un nome comuneai progetti che verranno creati.

• Questa “standardizzazione” non è d’obbligo, ma può semplificare il nostro modo di programmare ed imparare.

Page 11: GAE python GDG Milano - L02

Il framework: Webapp2

https://webapp-improved.appspot.com/

Page 12: GAE python GDG Milano - L02

Webapp2 - Quickstart https://webapp-improved.appspot.com/tutorials/quickstart.html

• Dal sito ufficiale:

Page 13: GAE python GDG Milano - L02

Webapp2 - La nostra struttura

• “Complichiamo per semplificare”:

Page 14: GAE python GDG Milano - L02

Webapp2 - app.yaml

Nome dell’applicazione creata su cloud.google.com

Attenzione: l’ordine è importante!

Possono essere “serviti”: sia singoli file statici

sia intere directory con il loro contenuto

ed ovviamente eseguiti script con codice

Importazione di librerie e funzionalità di sistema già integrate in App Engine

Page 15: GAE python GDG Milano - L02

Webapp2 - urls.py & handlers.py

Route

Handlers

Page 16: GAE python GDG Milano - L02

Webapp2 - Jinja2 ed i template

Sito ufficiale: http://jinja.pocoo.org/

Nel nostro caso:

Page 17: GAE python GDG Milano - L02

Risorse e codice:

Webapp2 sito ufficiale:https://webapp-improved.appspot.com/Documentazione Jinja2:http://jinja.pocoo.org/docs/dev/

File e base per siti web App Enginehttps://bitbucket.org/duedweb/base-gae-python

Domande??? ?

Page 18: GAE python GDG Milano - L02

Pausa Caffè, poi CodeLab! 5 minuti