2. CHI SIAMO
Membri e Fondatori del PUG MoRe
Magento Certified Developers
Colleghi in @webgriffe
3. PERCHÉ E COME È NATO
PROBLEMA
Propagare modifiche in Admin Panel su diversi ambienti
SOLUZIONI POSSIBILI
A mano: time consuming, error prone, costoso
Upgrade Script: time consuming, e conflitti su feature
branch
DB centralizzato: no offline, concorrenza spietata
Selenium: selettori da correggere e non cross-platform
MageFlow (?): "MageFlow Beta is launching in December"
Mageploy: niente codice, distribuito, time-saving
6. COME FUNZIONA
STATUS E RUN (GIT PULL SU ALTRO AMBIENTE)
v ga tp ei e2 / a/ w/ a1 0 $ g tp l
a rn @ rc s3 :v rw w mg 80 i u l
r mt :C ut n oj cs 2,d n .
e oe on ig b et : 7 oe
r mt :C mr si goj cs 1 0 (/) d n .
e oe op es n be t : 0 % 44, oe
r mt :T tl 1 (e t 3, ru e 1 (e t 3
e oe oa 4 d la ) e sd 4 dl a )
U pc ig oj cs 1 0 (4 1 ) d n.
n ak n b et : 0% 1 /4 , oe
F o g t u. o: u- oe d m- ae a2 1
r m ih bc mp g mr /e om g dy 03
e 54 2. e4 2 m se
a a9 .74 39 a tr
- o ii /a tr
> r gn ms e
U dt n e5 42 .e 42
p ai g aa 9. 7 43 9
F s- ow r
a tf r ad
v rm gp o/ ae l ya lc v
a /a e ly mg po _l . s
1 fl sc ag d 1i sr i n( )
ie hn e,
ne to s+
|
1+
7. COME FUNZIONA
STATUS
v ga tp ei e2 / a/ w/ a1 0 $ p ps el mg p o. h a rn @ rc s3 :v rw w mg 80 h h l /a el yp p s
M gp o v1 19 -t ak n i at v -u e i r b ro
a el y
..
rc ig s c ie
s r s oe t
P ni gA to sl s :
e dn ci n it
I:1
D
-S v n w M g z i o ' a - 0 '( r n h o M n O t 2 0: 25 2 1 )
a e e aa z n mg 01 a o ci n o c 8 92: 6 0 3
T tl pn igat o s 1
o a e dn c in :
RUN
v ga tp ei e2 / a/ w/ a1 0 $ p ps el mg p o. h a rn @ rc s3 :v rw w mg 80 h h l /a el yp p r
M gp o v1 19 -t ak n i at v -u e i r b ro
a el y
..
rc ig s c ie
s r s oe t
A to I # -s ce sE e et c et cn s ce s
c in D 1
u c s lm no r ao o u cs o
E eu e at os 11
x ct d ci n: /
10. COME FUNZIONA
PANNELLO DI ADMIN (COMMIT E PUSH DELLA DELETE)
v ga tp ei e2 / a/ w/ a1 0 $ g ts au
a rn @ rc s3 :v rw w mg 80 i t t s
# O b a c m se
n rn h at r
# Ca gs nt sa e fr c mi :
hn e o t gd o o mt
#
#
m df e: vr mg po / ae ly al cv
oi id
a/ a el ym gp o_ l .s
#
v ga tp ei e2 / a/ w/ a1 0 $ g tc mi - m" lm n t m gz i o
a rn @ rc s3 :v rw w mg 80 i o m t a Ei ia o aa zn "
[ at re db 6 Ei ia o mg zi o
m se de 2] l mn t aa z n
1 fl c ag d 1i sr in +
ie h ne ,
n et o ()
v ga tp ei e2 / a/ w/ a1 0 $ g tp s
a rn @ rc s3 :v rw w mg 80 i u h
C ut n oj cs 9 dn .
o ni g be t: , o e
D la cm rs in u ig u t 2t ra s
e t o pe so s n p o
h ed .
C mr si go jc s 10 ( /) d n.
o pe s n be t: 0 % 33 , oe
W ii go jc s 10 ( / ) 4 0b ts d n.
r tn be t: 0 % 55 , 4 ye , o e
T tl 5( et 2 ,r ue 0(e t 0
oa
dl a ) es d
d la )
T gt g tu .o :u -o e dm -a ea 21 . i
o i @i hb cm p gm r/ eo m gd y0 3g t
3 74 f. de 2 m se - ms e
5 db . ed b6 a tr > a tr
11. COME FUNZIONA
PANNELLO DI ADMIN (RICEZIONE DELLE DELETE DA PARTE
PRIMO DEV)
a es nr @o as i ~N te nP o et /a e8 0 pp se l mg po .h l sa d oK wl k : /e B as rj cs mg 1 0$ h h l/ ae ly p p s
M gp o v1 19 -t ak n i at v -u e i a o ci
a el y
..
rc ig s c ie
s r s rn h
P ni gA to sl s :
e dn ci n it
I : 2 -D lt e it n Mg zi o 'a -0 ' ( oe t o Mn Ot 2 1 :1 2 2 1)
D
ee e x s ig a az n mg 01 rb ro n o c 8 0 2: 0 03
T tl pn igat o s 1
o a e dn c in :
a es nr @o as i ~N te nP o et /a e8 0 pp se l mg po .h l sa d oK wl k : /e B as rj cs mg 1 0$ h h l/ ae ly p p r
M gp o v1 19 -t ak n i at v -u e i a o ci
a el y
..
rc ig s c ie
s r s rn h
A to I # -s ce sE e et c ne lt c ns ce s
c in D 2
u c s lm no a cl ao o u c so
E eu e at os 11
x ct d ci n: /
12. COME È SVILUPPATO
THE MAGENTO WAY
Request Funnel: registra le invocazioni alle Action a cui è
associato un Tracker
Tracker: implementa encoding e decoding dei parametri
delle Action convertendo gli ID specifici di ogni ambiente in
UUID
UUID (Universally Unique Identifier): identifica
univocamente le entità secondo una logica specifica;
implementazione potenzialmente complessa che può
richiedere vincoli
Config: un modulo può aggiungere i propri Tracker
dichiarandoli nel config.xml
14. COME È SVILUPPATO
DICHIARAZIONE DI UN TRACKER NEL CONFIG.XML
< of g
c ni >
..
.
<e al >
df u t
..
.
< ae ly
m g po>
<c in >
a to s
<eo mg d y0 3
dm _a ea 21 >
<i al d0/ ia ld
d sb e><d s be>
<l s>e oM gd y0 3 Md lM gp o_ c in Mg zi i/l s>
c as Dm _a e a2 1_ oe _a e ly At o_ a az n<ca s
<dm _a e a2 1>
/e om gd y0 3
<a to s
/ ci n>
<mg po >
/a el y
..
.
<d fu t
/ e a l>
..
.
<cn i >
/of g
15. COME È SVILUPPATO
LA CLASSE CHE IMPLEMENTA IL TRACKER
Estende
PgoeMgpo_oe_cinAsrc
uMR_aelyMdlAto_btat
Implementazione minima per registrare le informazioni
utili nel log utilizzando la funzione m t h )della classe
ac(
base
< pp
?h
c as Dm _a ea 2 1_ oe _a e ly At o_ aa z n
l s e oM gd y0 3M d lM gp o_ ci n Mg zi i
e tn sP g oe Mg po _ oe _c in As r c
xe d uM R_ a el yM dl At o _b ta t
{
cn tV RI N= ' '
os ES O
1;
po et d $ cd = 'e o mg dy 3m gz i i;
rt c e _o e
d m_ ae a 1_ aa zn '
po et d $ ba k be aa s= a ry 'e ' 'o mk y )
rt c e _l na lP r m
r a(ky , fr _ e' ;
po et d f nt o _e V ri n){
rt c e uc in g te so (
rt r
e un
M g: hl e( pg o em gp o' -g t es o( )' 'sl :V RI N
a e: ep r 'u mr _a e ly )> eV ri n 2. ..ef :E S O;
}
}
16. COME È SVILUPPATO
LA FUNZIONE MATCH() DELLA CLASSE BASE
< pp
?h
p b i f n t o m t h) {
u lc u ci n ac(
$ = M g: hl e(pg o em gp o' ;
h
a e: ep r'u mr _a e ly )
$- lg "o ue n m: %" $ hs>r qe t >e Md lN m ()
h > o (M dl a e s , t i -_ eu s- gt o ue ae );
$- lg "o to l rn m: %" $ hs>r q et >e Cn r le Nm ()
h > o (C nr le a e s , ti -_ eu s- g to to lr ae ) ;
$- lg "c in n m: %" $ hs>r qe t >e At oN m ()
h > o (A to a e s , t i -_ eu s- gt c in ae );
$- lg "e us P rm t r: %" p it r $ hs> rq et >e Pr m (, tu );
h > o (R qe t aa ee s s , r n_ ( ti -_ eu s -g ta as ) r e)
rt r fl e
eu n as ;
}
17. COME È SVILUPPATO
INFORMAZIONI NEL LOG DOPO UNA SAVE ACTION
NEW
DELETE
2 1- 02 T8 4: 7 0: 0D BG ( )
0 31 - 80 :4 2+ 00 EU 7 :
Md l nm :d ma 21
ou e ae e m g0 3
2 1- 02 T8 4: 7 0: 0D BG ( )
0 31 - 80 :4 2+ 00 EU 7 :
Cn rl e nm :a mn t lm gz ii
ot o lr ae di hm _a a zn
2 1- 02 T8 4: 7 0: 0D BG ( )
0 31 - 80 :4 2+ 00 EU 7 :
At o nm :s v
ci n ae a e
2 1- 02 T8 4: 7 0: 0D BG ( )
0 31 - 80 :4 2+ 00 EU 7 :
Rq et Pr mt r :A ry
eu s a ae es r a
(
[ e] = 1a 1e 6. 5 95 b4 a
k y > d2 3 7. .1 18 0 4
[ om ky = v 1o 5h 58 O
f r _e ] > 1 Mz R XU 43
[ oi e = m g 01
c d c] > a- 0
[ oe = MC n e
n m ] > B et r
[ ai n] = I
n z oe > T
[ it ]= M dn
cta > oea
[ a] = 41 0
c p > 10
[ ni iz ]= v ae V ri i, 5/
i d rz o > il i gl o 2
E
[ mi ]= m g0 @o e gu po g
e a l > a 0 1m r. rs . r
)
2 1- 02 T9 0: 8 0: 0D BG ( )
0 31 - 80 :0 2+ 00 EU 7 :
Md l nm :d ma 21
ou e ae e m g0 3
2 1- 02 T9 0: 8 0: 0D BG ( )
0 31 - 80 :0 2+ 00 EU 7 :
Cn rl e nm :a mn t lm gz ii
ot o lr ae di hm _a a zn
2 1- 02 T9 0: 8 0: 0D BG ( )
0 31 - 80 :0 2+ 00 EU 7 :
At o nm :d lt
ci n ae e e e
2 1- 02 T9 0: 8 0: 0D BG ( )
0 31 - 80 :0 2+ 00 EU 7 :
Rq et Pr mt r :A ry
eu s a ae es r a
(
[d = 1
i] >
[ e] = f6 90 .2 c 3a
k y > 61 7 .. 3e 06
)
19. < pp
?h
c as Dm _a ea 2 1_ oe _a e ly At o_ aa z n e t nsPg oe Mg p o_ oe _c
l s e oM gd y0 3M d lM gp o_ ci n Mg zi i xe d uM R _a el yM d lA t
{
c ntVR IN = ''
o s E SO
1;
p oe td $c d = ' e om gd y3 mg z ii;
r t ce _ oe
dm _a e a1 _a az n'
p oe td $b a kb ea as = ar y ' e' ' om ky )
r t ce _ ln al P rm
ra (k y , f r _e ';
p oe td fn t o _ e Vr in)
r t ce u ci n gt es o(
{
r tr M g: hl e (p go em gp o '- gt es o () .' '. sl : VR IN
eu n a e :e pr 'u m r_ ae ly )> e Vr in 2
.
e f: ES O ;
}
p bi f nt o mt h)
u l c u ci n ac (
{
i ( $h s> rq e t {
f ! ti - _e us )
r tr f le
eu n as;
}
i ( ti-_ eu s -g to ue ae ) = ' e mg 03){
f $ hs> rq et >e M dl Nm ( = dm a2 1 '
i ( ti-_ e us -g to to l ra e) = 'd ih m_ a az n' {
f $ h s> r q e t > e C n r l e N m ( = a m n t l m g z i i )
i ( na r y$ hs>r qe t >e At oN m (, ar y ' ae ,'e ee ))
f i_ ra (t i-_ eu s- gt c in ae ) ra ( sv ' dl t ')
rt r tu ;
eu n re
}
}
}
r tr f le
eu n a s;
}
p bi f nt o ec d (
u l c u ci n no e )
{
20. COME È SVILUPPATO
RISULTATO DEL TRACKING (CSV)
c l: 18 92 7
o 1 3 25 16
c l: ao ci
o 2 r nh
c l: Sv n wM gz io ' a- 0'
o 3 a e e a a zn m g0 1
c l: Dm _a ea 2 1_ oe _a e ly At o_ aa z n
o 4 e oM gd y0 3M d lM gp o_ ci n Mg zi i
c l: Dm _a ea 2 1
o 5 e oM gd y0 3
c l: am nt lm g zi i
o 6 d ih m_ aa zn
c l: sv
o7 ae
c l: oO tO YI N Zl ZI c. t 3l my Xw my y 7Q =
o 8 3 nz j6 mv Gj S 7. .b JL dd N L9 ZI f=
c l: 11 1
o9 ..
21. CONFLITTI
Scenario: due programmatori hanno creato un magazzino
con lo stesso codice. Il primo ha già fatto commit e push.
Il secondo si ritrova nello stato seguente:
a es nr @o as i ~N te nP o et /a e8 0 gt pl
l sa d oK wl k : /e B as rj cs mg 1 0$ i u l
r mt :C ut n oj cs 9 d n.
e oe on ig b et : , o e
r mt :C mr si goj cs 1 0 (/) d n .
e oe op es n be t : 0 % 11, oe
r mt :T tl 5( e t 2, ru e 5( et 2
e oe oa
dl a ) es d
d la )
U pc ig oj cs 1 0 (/) dn .
n ak n b et : 0% 5 5, o e
F o g t u. o: u- oe d m- ae a2 1
r m ih bc mp g mr /e om g dy 03
48 0 9. 8d 1 ms e
6 39 . 5 7a b a tr
- oi i/ a tr
> r gn ms e
A t- eg n vr mg po / ae ly al cv
u om r ig a/ a el ym gp o _l .s
C NL C (o tn ) Mr ec nl c i vr mg po / ae ly al cv
O FI T cn et : eg of it n a/ a el ym gp o _l .s
A tm tcmr ef i e; fx cn l cs ad te c mi t er sl .
u oa i e g al d i o fi t n h n o m t h eu t
22. CONFLITTI
Cosa troveremo nel m g p o _ l . s ?
aelyalcv
<<< < H A
<<< ED
1 89 63 ,r nh , Sv n wM gz io ' a - 0' ,e oM g dy 03 Md lM g po _c in
3 25 5 0a oc i" ae e a a zn m g0 1" D m_ ae a2 1_ o e_ ae ly A to _
= == =
= ==
1 89 64 ,o et , Sv n wM gz io ' a - 0' ,e oM g dy 03 Md lM g po _c in
3 25 1 6r br o" ae e a a zn m g0 1" D m_ ae a2 1_ o e_ ae ly A to _
> >> >5 7a b2 2 37 40 8f 8 45 fe c5 f
> >> 8d 11 29 13 2 3e 35 37 21 6 0c
Come si risolve? Parlandosi :-)
Un conflitto di questo tipo è il risultato di una mancata
comunicazione; va risolto scegliendo l'azione da mantenere
o eliminando entrambe e registrandone una nuova.