GAE python GDG Milano - L02

Post on 20-Jul-2015

109 views 1 download

Transcript of 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

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: info@2dweb.it

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

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

Se la sensazioneè questa… …parliamone !

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

Lo Zen di Python

No, non sto scherzando…

esiste! potete provarlo anche da soli:

da terminale:

python

>>> import this

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)

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ù!)

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.

Il framework: Webapp2

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

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

• Dal sito ufficiale:

Webapp2 - La nostra struttura

• “Complichiamo per semplificare”:

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

Webapp2 - urls.py & handlers.py

Route

Handlers

Webapp2 - Jinja2 ed i template

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

Nel nostro caso:

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??? ?

Pausa Caffè, poi CodeLab! 5 minuti