Collaborare a distanza non è facile, soprattutto quando si ha a che fare con un certo numero di collaboratori. Si pongono problemi di comunicazione, di gestione del codice, di ridondanza…
L’inevitabile conseguenza di una cattiva gestione delle collaborazioni a distanza è il protrarsi oltre termine della fine o della consegna dei lavori. Per non parlare della brutta figura con i clienti e del danno all’immagine che ne consegue.
Allora, come fare? Quali tecniche e quali strumenti possono aiutarci a migliorare il nostro lavoro? Per esempio, come usare Git per ottimizzare le collaborazioni a distanza?
Sapere come poter creare e gestire un repository su GitHub [ una cosa fondamentale per il tuo lavoro da sviluppatore.
Non importa che tu sia un novizio, che tu lavori da solo o in un team di 100 persone; un sistema di controllo versione è importante!
All'interno del nostro webinar ti abbiamo introdotto ai concetti che scopri all'interno di questa presentazione, se vuoi approfondire consulta il video su: http://skillsandmore.org/repo-github
Webinar Zend, http://www.zend.com/it/company/news/event/1081_webinar-introduzione-a-git
Introduzione a GIT, ai comandi principali, qualche trucchetto e best practice
Collaborare a distanza non è facile, soprattutto quando si ha a che fare con un certo numero di collaboratori. Si pongono problemi di comunicazione, di gestione del codice, di ridondanza…
L’inevitabile conseguenza di una cattiva gestione delle collaborazioni a distanza è il protrarsi oltre termine della fine o della consegna dei lavori. Per non parlare della brutta figura con i clienti e del danno all’immagine che ne consegue.
Allora, come fare? Quali tecniche e quali strumenti possono aiutarci a migliorare il nostro lavoro? Per esempio, come usare Git per ottimizzare le collaborazioni a distanza?
Sapere come poter creare e gestire un repository su GitHub [ una cosa fondamentale per il tuo lavoro da sviluppatore.
Non importa che tu sia un novizio, che tu lavori da solo o in un team di 100 persone; un sistema di controllo versione è importante!
All'interno del nostro webinar ti abbiamo introdotto ai concetti che scopri all'interno di questa presentazione, se vuoi approfondire consulta il video su: http://skillsandmore.org/repo-github
Webinar Zend, http://www.zend.com/it/company/news/event/1081_webinar-introduzione-a-git
Introduzione a GIT, ai comandi principali, qualche trucchetto e best practice
Or: how to build a complete system from scratch.
It begins by the requirements to have an installation process
easy to repeat, documented and auditable.
Crash course on the zope.buildout (italian language). Talk done at Pycon4 (2010).
The code: http://dl.dropbox.com/u/2369909/05_a_project_code_script.tgz
Or: how to build a complete system from scratch.
It begins by the requirements to have an installation process
easy to repeat, documented and auditable.
Crash course on the zope.buildout (italian language). Talk done at Pycon4 (2010).
The code: http://dl.dropbox.com/u/2369909/05_a_project_code_script.tgz
8. Punti di forza
● Facile da scrivere
● Facile da leggere
● Facile da mantenere
Riccardo Lemmi
9. Punti di forza
Le librerie standard coprono da sole
le necessità più comuni
String Services
Data Types
Numeric and Mathematical Modules
File and Directory Access
Data Persistence
...
Riccardo Lemmi
25. Liste
list1 = [1,2,'a',3,'b']
list1[0] → 1
list[:4] → [1,2,'a']
…
sono mutabili
list[1] = 1 → [1,1,'a',...
del list[0] → [2,'a',...
Riccardo Lemmi
26. Tuple
tuple1 = (1,2,'a',3,'b')
tuple1[0] → 1
tuple[:4] → [1,2,'a']
...
ma sono IMmutabili
list[1] = 1
del list[0]
e simili lanciano una eccezione
Riccardo Lemmi
28. for e tipi enumerabili
for x in [1,2,3]: …
for x in (1,2,3): …
for x in {'a':1, 'b',2}: …
for line in f.readlines(): ...
il 'while' serve a poco
Riccardo Lemmi
30. Generatori: Tipi
class firstn(object):
def __init__(self, n):
self.n = n
self.num, self.nums = 0, []
def __iter__(self):
return self
def next(self):
if self.num < self.n:
cur, self.num = self.num, self.num+1
return cur
else:
raise StopIteration()
Riccardo Lemmi
31. Funzioni
def f(x):
return x**2
Parametri
def f(x,y=1): # posizionali e per nome
…
def f(*args, **kargs):
...
Riccardo Lemmi
32. Visibilita' variabili
Global
● Le variabili definite a livello di modulo
Local
● Le variabili definite in una funzione
Riccardo Lemmi
33. Visibilita' variabili
total = 0 # This is a global variable.
def sum( arg1, arg2 ):
total = arg1 + arg2 # total is a local variable.
return total
Riccardo Lemmi
34. Visibilita' variabili
total = 0 # This is a global variable.
def sum( arg1, arg2 ):
global total # total is global
tot = arg1 + arg2 # tot is a local variable.
total += tot
return tot
Riccardo Lemmi
35. Classi
class Employee:
''''Common base class for all employees'''
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
def pretty_repr(self):
return '<Employee %s>'%self.name
Employee.empCount += 1
Riccardo Lemmi
36. Duck Typing
“When I see a bird that walks like a duck and
swims like a duck and quacks like a duck,
I call that bird a duck.”
“Se si comporta come un'oca...
deve essere un oca”
Riccardo Lemmi
37. Ereditarietà
class Person(object):
def __init__(self, name):
self.name = name
class Employee(Person):
''''Common base class for all employees'''
def __init__(self, name, salary):
super(Person, self).__init__(name)
self.salary = salary
Riccardo Lemmi
38. Riferimenti
● http://docs.python.org/
● http://www.learnpython.org/
● http://en.m.wikipedia.org/wiki/Duck_typing
● http://www.tutorialspoint.com/python
La maggior parte delle immagini sono prese da internet: ai rispettivi autori il credito.
Riccardo Lemmi