You are on page 1of 60

Staff

Eugenia Bahit
Arquitecta GLAP & Agile Coach
Indira Burga
Ingeniera de Sistemas
Mara Jos Montes !a"
#cnica en Inform$tica de Gesti%n
Milagros Infante Montero
Est& Ingeniera de Sistemas
Sergio Infante Montero
Ingeniero de Soft'are
(ac)ers & !e*elo+ers Maga"ine se distri,u-e ,a.o una licencia Creati *e Commons Atri ,uci %n
/oComerci al Com+arti rI gual 0& 1 2n+orted& Eres li,re de co+iar3 distri,uir - com+artir este material&
45EE AS I/ 45EE!6M7
AO ----------- 0
NMERO -------- 5
FECHA: 2013-03-25
:S;EE#<
HD
Hackers &
DEVELOPERS
+ Maga"ine digital de distri,uci%n
mensual so,re Soft'are Li,re3 (ac)ing - Programaci%n
+ara +rofesionales del sector de #ecnologas de la Informaci%n
Hacker es alguien que disfruta
jugando con la inteligencia
Richard Stallman
Free Software, Free Society
(Pg. 97), GNU Press 2010-2012
En esta edici%n=
LESS > El lengua.e din$mico de estilos&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&?
Estructura de datos en P-thon&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& @1
Es un +$.aro3 es un a*i%n A/o7 AEs P-6+enCL7&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&@9
2nit #esting con P(P2nit - P-2nit&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&B1
Manual de Perl CParte IIID&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& BE
Configurando GI# en 2,untu Ser*er &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0@
P$sate a G/2FLinuG con Arch LinuG= HIu es ABSJ -&&& HA25J&&&&&&&&&&&&&&&&0E
Equi+os Kgiles= Parte I&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ?B
#engo que desarrollar un nue*o Soft'are H+or d%nde em+ie"oJ&&&&&&&&&&?E
4irefoG6S A++ !a-s Barcelona&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 9?
L LAS SECCI6/ES !E SIEMP5E=
ASCII Art&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& P$g& 9M
Este mes= un recuerdo de la infancia
Nona 27&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& P$g& E1
La comunidad de nuestros lectores - lectoras
(ac)ers & !e*elo+ers Maga"ine3 es
una iniciati*a sin fines de lucro
destinada al fomento - difusi%n de
las tecnologas li,res +resentes o
futuras3 ,a.o una clara %+tica
docente - altruista3 que resulte de
inters tcnico -Fo cientfico a
+rofesionales del sector de
#ecnologas de la Informaci%n&
(ac)ers & !e*elo+ers Maga"ine se
sostiene econ%micamente con el
a+o-o de la comunidad3 no
reci,iendo su,*enci%n alguna de
ninguna em+resa3 organi"aci%n u
organismo de Go,ierno&
/ecesitamos de tu a+o-o +ara
+oder mantener este +ro-ecto&
A-Odanos a continuar
con este +ro-ecto
Puedes hacer un donati*o ahora3
de @13 @93 B93 913 @11 o @91 2S!
+ara a-udar a que (ac)ers &
!e*elo+ers Maga"ine +ueda seguir
+u,lic$ndose de forma gratuita3
todos los meses& Puedes donar con
Pa-Pal o #ar.eta de Crdito a tra*s
del siguiente enlace=
'''&hdmaga"ine&orgFdonar
C6/ #2 !6/ACIP/ !E 2S! @91
5ECIBES !E 5EGAL63
2/A 42/!A !E
/E6P5E/E PA5A #2
65!E/A!65 P65#K#I L
QAL2A!A E/ 2S! B9&R
C6rigen= Estados 2nidosD
Hackers &
DEVELOPERS
+
(ac)ers & !e*elo+ers Maga"ine es +osi,le gracias al com+romiso de=
Responsable de Proyecto
Eugenia Bahit
Responsables de Comunicacin
Indira Burga CAtenci%n al LectorD R Milagros Infante (if!si"#)
Sta Permanente
Eu!enia "ahit
$r%!itecta G&$'P & $gi(e )oac*
www.e!ge#ia+a*it.co,
#ila!ros $nante #ontero
-st!.ia#te .e /#ge#ier0a e# Siste,as
www.,i(a(e.#et
$ndira "ur!a
/#ge#iera .e Siste,as
a+o!t.,e1i#.ira+,
#ar%a &os' #ontes D%a(
23c#ica e# /#for,tica .e Gesti"#
arc*#i#fa.+(ogs4ot.co,.es
Ser!io $nante #ontero
/#ge#iero .e Software
#eosergio.#et
Colaboran)
)e(ia )i#tas, &a!ra 'ora
Diunden)
(ac)ers & !e*elo+ers Maga"ine agradece a los +ortales que nos a-udan con la difusi%n del +ro-ecto=
www..e+ia#*ac5ers.#et www..esarro((owe+.co, www..es.e(i#!6.#et
ERmail de Contacto=
contactoShdmaga"ine&org
!
E
S
A
5
5
6
L
L
6

;
E
B
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
?
LESS * El len!ua+e
din,mico de estilos
-na manera de e.tender las ho+as de estilo y
con/ertir al CSS en una especie de len!ua+e de
pro!ramacin0
Escrito por: Ser!io $nante #ontero (/#ge#iero .e Software)
/#ge#iero /#for,tico co# est!.ios .e #aster de Direccin Estrat'!ica
en 1$. /#ge#iero .e software e# 1aller 1echnolo!ies2 acti7ista,
co#tri+!i.or y co#s!(tor .e 4royectos 3LOSS, ,ie,+ro .e 4PESOL y
escritor .e art0c!(os y (i+ros t3c#icos .e 4rogra,aci"#.
Periles)
*tt4811a+o!t.,e1#eosergio
2witter8 5neoser!io
#o .e (os 4ro+(e,as ,s co,!#es c!a#.o se est co#str!ye#.o, a,4(ia#.o o
,o.ifica#.o !#a *o9a .e esti(o, es e( #o 4o.er !sar 7aria+(es .e#tro .e( )SS.
/#c(!so 4o.e,os ec*ar .e ,e#os e( !so .e f!#cio#es, 4ar,etros y tratar a( )SS
co,o !#a es4ecie .e (e#g!a9e .e 4rogra,aci"#.
U
-s as0 c",o $(e6is Se((ier (:c(o!.*ea.) i#f(!e#cia.o 4or e( tra+a9o .e ;a,4to# )at(i#
(:*cat(i#) co# e( S$SS
1
, !# ,eta(e#g!a9e .e )SS, e# 2009 .ise<a LESS
6
co,o !#
(e#g!a9e .e esti(os .i#,ico.
&-SS es !# 4royecto o4e# so!rce, %!e f!e escrito a( 4ri#ci4io e# =!+y, 4ero %!e (!ego
f!e 4asa.o a >a7ascri4t.
&o resa(ta#te .e &-SS es %!e 4!e.e f!#cio#ar .es.e e( (a.o .e( c(ie#te, e( (a.o .e(
ser7i.or y ta,+i3# 4!e.e ser co,4i(a.o 4ara ge#erar )SS, as0 co,o ta,+i3# 4er,ite e(
!so .e ,eca#is,os co,o 7aria+(es, a#i.a,ie#to, ,i6i#s, f!#cio#es y o4eracio#es.
La manera de usarl o
&a ,a#era ,s si,4(e .e e,4e?ar a .esarro((ar co# &-SS es .e( (a.o .e( c(ie#te. Si#
e,+argo, 4ara e#tor#os .e 4ro.!cci"# y es4ecia(,e#te si se #ecesita ,e9orar e(
1 *tt4811sass-(a#g.co,1
2 *tt4811(esscss.org1
.ese,4e<o es ,!y i,4orta#te 4re-co,4i(ar (ess, !sa#.o #o.e.9s
@
o a(g!#a *erra,ie#ta
.e terceros
A
.
Puedes usar htt+=FFlessBcss&orgF +ara +oder +ro,ar el +re+rocesamiento& Es una a+licaci%n onRline - +uedes *er el
resultado en el instante&
-# este art0c!(o 7ere,os .e( (a.o .e( c(ie#te y (a co#fig!raci"# 4or .efecto. Para e((o
.e+e,os .escargar e i#c(!ir less.js .e#tro .e #!estra 4gi#a8
<script src="less.js" type="text/javascript"></script>
)a.a *o9a .e esti(o %!e *aga,os co# &-SS, (a .e+e,os 4o#er .e (a sig!ie#te ,a#era8
<link rel="stylesheet/less" type="text/css" href="estilos.less" />
Las *ari a,l es
So# !#a .e (as caracter0sticas %!e ,ayor !ti(i.a. 4o.e,os e#co#trar. Be,os(o co# !#
e9e,4(o. 2e#e,os (os sig!ie#tes esti(os8
#elemento1 {
color: #ff0000
!
#elemento" {
color: #ff0000 float: left
!
#elemento# {
font$si%e: "em color:#ff0000 &isplay:inline
!
/,agi#e,os %!e %!ere,os ,o.ificar e( co(or (%!e es e( ,is,o 4ara to.os (os
e(e,e#tos). -scri+ie#.o co,o e( )SS tra.icio#a(, e( ca,+io tie#e %!e *acerse (0#ea 4or
(0#ea y +asta co# i,agi#ar !# arc*i7o ,s gra#.e 4ara .ar#os c!e#ta .e (o terri+(e y
co#f!so %!e 4!e.e tor#arse !# ca,+io .e co(or e# !#a *o9a .e esti(os.
Para este e9e,4(o e#to#ces, co# &-SS te#.r0a,os (o sig!ie#te8
@color: #ff0000
#elemento1 {
color: @color
!
@ *tt4s811git*!+.co,1c(o!.*ea.1(ess.9s1wi5i1)o,,a#.-&i#e-!se-of-&-SS
A *tt4s811git*!+.co,1c(o!.*ea.1(ess.9s1wi5i1GU/-co,4i(ers-t*at-!se-&-SS.9s
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 9
#elemento" {
color: @color float: left
!
#elemento# {
font$si%e: "em color: @color &isplay: inline
!
El CSS con variables y anidamiento sabe mejor
e esta ,a#era si .esea,os ca,+iar e( co(or s"(o te#.r0a,os %!e ca,+iar(o !#a 7e?, si#
i,4ortar (a ca#ti.a. .e esti(os .e#tro .e (a *o9a.
&as 7aria+(es 4!e.e# ser !ti(i?a.as 4ara .efi#ir co(ores, ta,a<os, 4orce#ta9es, 7a(ores y
.e,s.
El ani dami ento
&-SS ta,+i3# 4er,ite *acer a#i.a,ie#to .e esti(os o (o %!e se (e co#oce co,o
estr!ct!ra e# casca.a. Bea,os !# e9e,4(o8
#principal { mar'in: 10px !
#principal .men( { float: left font$si%e: 1"px !
#principal .&ialo'o { )i&th: *00px !
#principal .+oton { mar'in:0 a(to !
#principal .+oton:hover { +ack'ro(n&$color:#,,00,, !
-# (a si#ta6is &-SS ser0a .e (a sig!ie#te ,a#era8
#principal {
mar'in: 10px
.men( { float: left font$si%e: 1"px !
.&ialo'o { )i&th: *00px !
.+oton {
mar'in: 0 a(to
-:hover { +ack'ro(n&$color: #,,00,, !
!
!
C si se .esea, ta,+i3# .e esta ,a#era %!e (!ce ,s or.e#a.a y se e#tie#.e ,e9or8
#principal { mar'in: 10px
.men( { float: left font$si%e: 1"px !
.&ialo'o { )i&th: *00px !
.+oton { mar'in: 0 a(to
-:hover { +ack'ro(n&$color: #,,00,, !
!
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& E
!
-ste ti4o .e co.ificaci"# ay!.a i#c(!so a e#te#.er (a estr!ct!ra C' .e (a 4gi#aD
ta,+i3# es ,!y Eti( 4ara *acer a#i.a,ie#tos .e media queries, ay!.a#.o as0 a %!e sea#
,!y e#te#.i+(es (os esti(os %!e se est# escri+ie#.o.
Los Mi Gi n
U# mixin es !#a c(ase %!e 4er,ite ser *ere.a.a 4or !#a s!+c(ase, 4ero #o est 4e#sa.a
4ara ser a!t"#o,a. -6iste# 7arios (e#g!a9es .e 4rogra,aci"# %!e !sa# mixins co,o 4or
e9e,4(o8 )F, art, >a7ascri4t, Per(, Pyt*o#, P;P, =!+y, Sca(a, Ba(a, e#tre otros.
-# &-SS 4o.e,os te#er e( sig!ie#te e9e,4(o8
.resalta&o {
font$si%e: 1..em
color: #ff//00
!
#parrafo {
mar'in: .px
.resalta&o
!
footer {
pa&&in': 10px
.resalta&o
!
-sto 4ro7ocar0a e( sig!ie#te res!(ta.o e# )SS8
#parrafo {
mar'in: .px
font$si%e: 1..em
color: #ff//00
!
footer {
pa&&in': 10px
font$si%e: 1..em
color:#ff//00
!
Se 4!e.e ,e?c(ar o+7ia,e#te co# 7aria+(es y te#.r0a,os !# ,e9or res!(ta.o. &os mixins
4!e.e# ace4tar 4ar,etros, 4or e9e,4(o8
.mar'enes 01espacio: #px2 {
mar'in$top: 1espacio
mar'in$+ottom: 1espacio
!
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& V
nav {
.mar'enes
!
section {
.mar'enes0.px2
!
footer {
.mar'enes010px2
!
-sto .ar co,o res!(ta.o8
nav {
mar'in$top: #px mar'in$+ottom: #px
!
section {
mar'in$top: .px mar'in$+ottom: .px
!
footer {
mar'in$top: 10px mar'in$+ottom: 10px
!
Se 4!e.e# a4(icar otras co,+i#acio#es, i#c(!so !ti(i?ar (as 7aria+(es @arguments, @rest
e#tre otras 4ara *acer mixins a7a#?a.o. 2o.o esto est .is4o#i+(e e# (a .oc!,e#taci"#
.e( 4royecto
G
.
Las funci ones
&-SS tie#e 7arias f!#cio#es %!e 4er,ite# ,a#i4!(ar ca.e#as, *acer c(c!(os arit,3ticos
y tra#sfor,ar co(ores. 2o.as estas f!#cio#es est# .oc!,e#ta.as e# (as refere#cias .e
f!#cio#es e# e( 4royecto
H
.
$%!0 !# +re7e e9e,4(o .e (o %!e 4!e.e *acerse co# (as f!#cio#es8
1color: #ff0000
.alerta {
color: sat(rate01color3 1042
+ack'ro(n&$color: avera'e01color3 #00ff002
!
-sto .ar0a co,o res!(ta.o8
.alerta {
color: #ff0000
G *tt4811(esscss.org1F.ocs
H *tt4811(esscss.org1Frefere#ce
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& W
+ack'ro(n&$color: #505000
!
Las o+eraci ones
)!a(%!ier #E,ero, 7aria+(e o co(or es s!sce4ti+(e a ser o4era.a. $c !#os e9e,4(os .e
co,o se *ace#8
1relleno: 010px 6 "02
hea&er {
pa&&in': 1relleno 7 "
!
-sto .ar co,o res!(ta.o8
hea&er {
pa&&in': ,0px
!
C co# co(ores8
1color: #ffff00
+o&y {
+ack'ro(n&$color:01color / "2
!
&o c!a( .ar co,o res!(ta.o8
+o&y {
+ack'ro(n&$color: #505000
!
-stas so# s"(o a(g!#as cosas %!e se 4!e.e# *acer co# &-SS. Si se .esea co#tri+!ir co# e(
4royecto, e( c".igo f!e#te esta a(o9a.o e# git*!+
7
. I #o o(7i.ar re7isar (a
.oc!,e#taci"# y 4racticar.
La prctica convierte al alumno en maestro
7 *tt4s811git*!+.co,1c(o!.*ea.1(ess.9s
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& M
P
L
#
(
6
/
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
@1
Estructura de datos en
Python
4l pro!ramar es muy importante contar con una
orma de or!ani(ar un con+unto de datos para acilitar
as% su manipulacin2 con esto me reiero a contar con
una estructura de datos 7ue nos permita deinir la
or!ani(acin e interrelacin de datos y operaciones2
la cual la /eremos enocada a Python0
Escrito por: #ila!ros 4lessandra $nante #ontero (-st. /#g. /#for,tica)
Estudiante de $n!enier%a $norm,tica. 'ie,+ro .e 4PESOL
($sociaci"# Per!a#a .e Software &i+re) y .e (a co,!#i.a. .e software
(i+re Lumenhack. 'ie,+ro .e( e%!i4o .e tra.!cci"# a( es4a<o( .e
89O#E. $4asio#a.a 4or e( .esarro((o .e software, tec#o(og0a y
ga.gets. efe#sora .e tec#o(og0as +asa.as e# software (i+re y .e
c".igo a+ierto.
:ebs)
J(og8 www.,i(a(e.#et
Redes sociales)
2witter 1 /.e#ti.ca8 5milale
!a#.o *a+(a,os .e 4rogra,aci"#, (a estr!ct!ra .e .atos es !#a for,a .e
orga#i?ar e( dataset (to.a i#for,aci"# e# e( siste,a) %!e #os .ar (a 4osi+i(i.a.
.e faci(itar e( ,a#e9o .e( ,is,o. )
efi#ire,os (a orga#i?aci"# y re(aci"# e#tre e( co#9!#to .e .atos y (as o4eracio#es %!e
se 4!e.e# rea(i?ar8 a<a.ir !# 7a(or, +orrar !# 7a(or, e#co#trar !# .eter,i#a.o 7a(or (y
rea(i?ar !#a o4eraci"# co# 3(), or.e#ar 7a(ores, a4arear estr!ct!ras 4ara o+te#er !#a
#!e7a, e#tre ,!c*as otras o4eracio#es. )a.a estr!ct!ra .iferir .e otras 4or (a
si,4(ici.a. o eficie#cia e# (as o4eracio#es.
Con. untos
So# co#te#e.ores .e 7a(ores si# e(e,e#tos .!4(ica.os y #o #ecesaria,e#te co# !#
or.e# %!e 4!e.e 7erse co,o !# array (!#a ca.e#a asociati7a). S!s !sos +sicos so# 4ara
co,4ro+ar (a 4erte#e#cia y (a e6iste#cia .e e(e,e#tos re4eti.os. -# Pyt*o#, (os o+9etos
co#9!#to tie#e# o4eracio#es ,ate,ticas co,o !#i"#, i#tersecci"#, .ifere#cia y
.ifere#cia si,3trica.
>>> armario = 89polo93 9jean93 9fal&a93 9jean93 9fal&a9:
# crear conjunto sin elementos duplicados
>>> ropa = set0armario2
>>> ropa
set089polo93 9jean93 9fal&a9:2
# comprobar pertenencia
>>> 9polo9 in ropa
;r(e
>>> 9+l(sa9 in ropa
<alse
# Demostracin de las operaciones de conjuntos sobre las letras de dos palabras
>>> a = set09hack&evma'a%ine92
>>> + = set09hackerteam92
>>> a #letras sin repeticin de a
set089a93 9c93 9e93 9&93 9'93 9i93 9h93 9k93 9m93 9n93 9v93 9%9:2
>>> a = + # letras de a que no estn en b
set089&93 9'93 9i93 9n93 9v93 9%9:2
>>> a - + # letras que estn en a y en b
set089a93 9c93 9e93 9h93 9k93 9m9:2
>>> a > + # letras que estn en a o b
set089a93 9c93 9e93 9&93 9'93 9i93 9h93 9k93 9m93 9n93 9r93 9t93 9v93 9%9:2
>>> a ? + # letras que estn en a y b pero no en los dos
set089&93 9'93 9i93 9n93 9r93 9t93 9v93 9%9:2
Matri "
U# arreg(o o array (((a,a.o 7ector e# !#a .i,e#si"#, ,atri? e# .os), so# ?o#as .e
a(,ace#a,ie#to co#ti#!o y or.e#a.o co#te#ie#.o e(e,e#tos .e( ,is,o ti4o.
>>> from array import 7
>>> a = array09i93813"3#3*3.3,:2
>>> a80:
1
>>> a8*:
.
>>> a8#:6a81:
,
>>>
Li sta
-sta es !#a estr!ct!ra .e .atos f!#.a,e#ta(. -s !#a sec!e#cia .e #o.os e# (os %!e se
g!ar.a# ca,4os .e .atos ar+itrarios y refere#cias o e#(aces a( #o.o a#terior o
4osterior. &os ti4os .e (istas so#8
Lista simple enla(ada)
-s (a ,s +sica ya %!e 4osee !# e#(ace 4or #o.o, e( c!a( a4!#ta a( sig!ie#te #o.o e# (a
(ista y a NU&& si es e( E(ti,o #o.o.
Lista doblemente enla(ada)
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @@
-# este ti4o .e (ista ca.a #o.o tie#e .os e#(aces8 !#o a( a#terior y otro a( NU&& si es e(
4ri,er #o.o y otro %!e a4!#ta a( sig!ie#te #o.o o a NU&& si es e( E(ti,o #o.o.
Lista enla(ada circular)
-( 4ri,er y E(ti,o #o.o est# !#i.os 9!#tosD se 4!e.e e,4e?ar 4or c!a(%!ier #o.o 4ara
.es4(a?ar#os 4or (a (ista y e# c!a(%!ier .irecci"#D 4!e.e# ser 7istas co,o (istas si#
co,ie#?o #i fi#.
-# Pyt*o#, (a (ista se escri+e co,o !#a (ista .e 7a(ores (#o #ecesaria,e#te .e( ,is,o
ti4o) se4ara.os 4or co,as y e#tre corc*etes.
>>> e&icion = 89+(tterfly93 9co+ra93 9champa'ne93 9elvis93 9narciso9:
>>> e&icion
89+(tterfly93 9co+ra93 9champa'ne93 9elvis93 9narciso9:
&os 0#.ices e,4ie?a# e# 0 co,o e# (as ca.e#as. Po.e,os 9!gar !# 4oco co# esto8
>>> e&icion8*:
9narciso9
>>> e&icion8$":
9elvis9
>>> e&icion81:$1:
89co+ra93 9champa'ne93 9elvis9:
>>> e&icion8:": 6 89hack&ev939hacker9:
89+(tterfly93 9co+ra93 9hack&ev93 9hacker9:
&as ca.e#as so# i#,!ta+(es, 4ero e# este caso e# (as (istas se 4!e.e ca,+iar (os
e(e,e#tos8
>>> e&icion80:1:
89+(tterfly9:
>>> e&icion80:1: = 89primera e&icion9:
>>> e&icion
89primera e&icion93 9co+ra93 9champa'ne93 9elvis93 9narciso9:
Kr,ol
-s !# co#9!#to .e #o.os co#ecta.os. -( #o.o es (a !#i.a. .e este ti4o .e estr!ct!ra .e
.ato. -6iste !# #o.o 4a.re e( c!a( tie#e !#o o ,s #o.os *i9os (ra,a). So(o 4!e.e *a+er
!# E#ico #o.o si# 4a.res (%!e ser (a ra0?). -( #o.o %!e #o tie#e *i9os se co#oce co,o
*o9a.
)!a#.o *a+(a,os .e( recorri.o .e( r+o(, e# !#a s!cesi"# .e #o.os, ca.a .os
co#sec!ti7os *ay !#a re(aci"# .e 4are#tesco. -6iste# .os recorri.os t04icos 4ara (istar
#o.os8 4ri,ero e# 4rof!#.i.a., .o#.e se (ista# (os #o.os e64a#.ie#.o e( *i9o act!a( .e
ca.a #o.o *asta ((egar a !#a *o9a y e( 4ri,ero e# a#c*!ra, e# e( %!e a#tes .e (istar (os
#o.os .e #i7e( #K1 (a .ista#cia #K1 aristas .e (a ra0?) se .e+e# *a+er (ista.o (os .e #i7e(
#.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @B
Operaciones)
&as ,s co,!#es e# r+o(es 4!e.e# ser8
-#!,erar e(e,e#tos
J!scar e(e,e#tos
&istar *i9os e# !# #o.o
Jorrar e(e,e#tos
-(i,i#ar o a<a.ir s!+r+o(es
-#co#trar (a ra0? .e c!a(%!ier #o.o
-#tre ,!c*as ,s 4osi+(es.
#u+l as - secuenci as
-s !# ti4o .e .ato .e sec!e#cia, e6iste#te e# Pyt*o# 4or ser !# (e#g!a9e e# e7o(!ci"#,
(a t!4(a co#sta .e cierta ca#ti.a. .e 7a(ores se4ara.os 4or co,as
>>> h = 9h&93 9hacker93 9ma'a%ine93 9s)eet9
>>> h80:
9h&9
>>> h
09h&93 9hacker93 9ma'a%ine93 9s)eet92
>>> #@ara ani&ar t(plas
... & = h3 09exito92
>>> &
009h&93 9hacker93 9ma'a%ine93 9s)eet923 9exito92
En la +rimera salida se encierran las tu+las entre +arntesis3 esto es +ara que las tu+las anidadas se inter+reten
correctamente3 en la entrada +ueden ser o+cionales +ero es una ,uena +r$ctica usarlos siem+re +or si la tu+la
que haremos se *uel*a com+le.a&
&as t!4(as so# ,!y Eti(es y co,o (as ca.e#as so# i#,!ta+(es 4ero se 4!e.e# crear (as
%!e co#te#ga# o+9etos ,!ta+(es.
Ya es difcil encontrar un error en tu cdigo cuando tu lo
ests buscando y es an ms difcil cuando ya has asumido
ue tu cdigo est libre de errores! " Steve #cConnell!
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @0
)!a#.o escri+i,os * L M*.M, M*ac5erM, M,aga?i#eM, MsweetM se (e .e#o,i#a e,4a%!eta.o
.e t!4(as ((os 7a(ores se e,4a%!etaro# e# (a t!4(a *), 4ero ta,+i3# se 4!e.e rea(i?ar (a
o4eraci"# i#7ersa8
9h&93 9hacker93 9ma'a%ine93 9s)eet9 = h
&o %!e se ((a,a .ese,4a%!eta.o .e sec!e#cias. &a co#.ici"# a%!0 es %!e sea ig!a( a(
#E,ero .e e(e,e#tos .e (a sec!e#cia.
!i cci onari os
-# otros (e#g!a9es .e 4rogra,aci"# se (es co#oce co,o ,e,orias asociati7as o
,atrices asociati7as. -# Pyt*o# so# (os .iccio#arios %!e se i#.e6a# ,e.ia#te c(a7es
(ca.e#as y #E,eros) %!e 4!e.e# ser .e c!a(%!ier ti4o i#,!ta+(e. Si !#a t!4(a co#tie#e
o+9etos ,!ta+(es #o se 4!e.e# !sar co,o c(a7e. Por e9e,4(o8 #o se 4!e.e# !ti(i?ar
(istas ya %!e estas se 4!e.e# ,o.ificar. U# .iccio#ario .e+e ser 4e#sa.o co,o !#
co#9!#to .esor.e#a.o .e 4are9as .o#.e (as o4eracio#es 4ri#ci4a(es so# .e
a(,ace#a,ie#to o e6tracci"# .e 7a(ores.
-( ,3to.o keys;< .e !# o+9eto .e7!e(7e to.as (as c(a7es !ti(i?a.as e# e( .iccio#ario.
Para co,4ro+ar si !#a c(a7e e6iste se !ti(i?a (a i#str!cci"# key n !""#nar#)
>>> e&a& = {9asael9: ".3 9roy9: "*3 9carolina9: "1!
>>> e&a&89milale9: = "1
>>> e&a&
{9roy9: "*3 9asael9: ".3 9milale9: "13 9carolina9: "1!
>>> e&a&89roy9:
"*
>>> &el e&a&89carolina9:
>>> e&a&
{9roy9: "*3 9asael9: ".3 9milale9: "1!
$ener presentes las estructuras de datos en nuestro lenguaje
preferido es muy importante% ya ue el manejo de nuestro
conjunto de datos se har de la mejor manera posible
)!a#.o !#o 4rogra,a .e+e se#tirse c",o.o co# (o %!e Mco.eaM, a#a(i?a#.o +ie# c!( es
(a estr!ct!ra %!e 4er,ita e( ,a#e9o ,s a.ec!a.o .e( dataset.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @?
P
L
#
(
6
/
Es un p,+aro2 es un
a/in =9o> =Es
PyOpenCL>
En este art%culo se tratar, de e.plicar cmo utili(ar
este ant,stico framework llamado OpenCL? para el
desarrollo de aplicaciones paralelas0 9uestra
aplicacin desarrollada en OpenCL? podr, correr en
una amplia !ama de hard@are2 desde sAper
computadoras hasta modernas tostadoras0 Primero
pasaremos por los conceptos b,sicos y lue!o
reali(aremos un e+emplo implementando un mapa
lo!%stico.
Escrito por: Celia Cintas (&ice#cia.a e# /#for,tica)
Licenciada en $norm,tica (UNPS>J), act!a(,e#te rea(i?a#.o
Doctorado en $n!enier%a (Procesa,ie#to .e /,ge#es, UNS), oce#te
(UNPS>J), /#te#to .e sysa.,i# ())) y co.e ,o#5ey e( resto .e (as
*oras 8). Pyt*o#era 4or .efecto co# a(ar,a#tes i#c(i#acio#es *acia
Pro(og y otras *ere90as.
:ebs)
J(og8 *tt4811yeta#ot*er(og.wor.4ress.co,1
Redes sociales)
2witter 1 /.e#ti.ca8 5R13#celia
4e#)&N (C4e# )o,4!ti#g &a#g!age) es e( 4ri,er framework a+ierto, (i+re .e
rega(0as, %!e f!#cio#a e# to.as (as 4(atafor,as 4ara (a 4rogra,aci"# .e
a4(icacio#es %!e !ti(ice# ,%!i#as co,4!estas 4or )PUs, GPUs y otras fa,i(ias
.e 4rocesa.ores. )o# C4e#)&N 4o.e,os escri+ir !# E#ico 4rogra,a %!e 4!e.e correr
e# !# gra# ra#go .e siste,as, .es.e ce(!(ares y notebooks *asta sE4er co,4!ta.oras.
C
C4e#)&N ,e9ora (a 7e(oci.a. y se#si+i(i.a. e# !# a,4(io es4ectro .e a4(icacio#es,
.es.e 9!egos y e#trete#i,ie#to *asta a4(icacio#es cie#t0ficas y ,3.icas.
HC%mo est$ es+eci fi cado 6+enCLX J
Po.e,os res!,ir(o e# c!atro ,o.e(os8
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @9
1. e -9ec!ci"#8 #os i#.ica %!e te#e,os !# 4rocesa.or (host) e#carga.o .e (a
coor.i#aci"# .e (a e9ec!ci"# y 7arios 4rocesa.ores (.is4ositi7os) e#carga.os .e
e9ec!tar e( c".igo C4e#)& ), a( %!e ((a,are,os kernels.
2. e P(atafor,a8 .efi#e c",o co#fig!rar e( e#tor#o .e( host y c",o (os kernels so#
e9ec!ta.os e# s!s res4ecti7os .is4ositi7os, (o c!a( i#c(!ye (a co#fig!raci"# .e(
co#te6to e# e( host y c",o .e+e# i#teract!ar e#tre e( *ost y (os .is4ositi7os.
@. e 'e,oria8 #os i#.ica c",o ser (a 9erar%!0a .e ,e,oria %!e !ti(i?ar# (os
kernels, .a.o %!e te#e,os ,e,oria 4ri7a.a 4ara ca.a 0te, .e#tro .e !#
workgroup y .e#tro .e 3ste te#.re,os otra c(ase .e ,e,oria %!e ser
co,4arti.a 4or (os 0te, .e( ,is,o workgroup. C4e#)& 7er c",o ,a4ear esta
a+stracci"# e# e( *ar.ware rea(.
A. e Progra,aci"#8 a%!0 7ere,os c",o se ,a4ea #!estra a4(icaci"# e# e(
*ar.ware.
2ratar .e e64(icar (a estr!ct!ra .e C4e#)&N e# !# art0c!(o #o ser0a .e( to.o "4ti,o 4or
(o %!e %!e.a a( (ector ,irar a(g!#as .e (as refere#cias cita.as a( fi#a( (as c!(es (e .ar#
!# gra# 4a#ora,a so+re (a teor0a .e 4rogra,aci"# 4ara(e(a co# C4e#)&.
Encendi endo motores Y
)o#si.era#.o %!e ya tie#e# C4e#)&N i#sta(a.o es s!s res4ecti7as .istri+!cio#es so(o
#os e#co#tra,os a !# pip .e PyC4e#)& (ta,+i3# 4!e.e# e#co#trar s! re4ositorio e#
*tt4s811git*!+.co,1i#.!cer14yo4e#c(.git)
2e#ie#.o to.o (isto 7ea,os c",o ser (a estr!ct!ra .e #!estra a4(icaci"#. Osta co#tar
.e .os arc*i7os8
N!estro main.py, %!e ser a(o9a.o e# e( host y se e#cargar .e crear (os
conte.tos
B
, buffers
9
#ecesarios, colas
CD
y e#7iar a e9ec!ci"# a (os kernels.
N!estro kernel.cl %!e te#.r e( c".igo %!e se e9ec!tar e# ca.a .is4ositi7o.
Nor,a(,e#te e( arc*i7o main.py, te#.r (os sig!ie#tes +(o%!es (,s a.e(a#te se
4!e.e o+ser7ar e( c".igo co,4(eto).
1. $#te to.o se crea e( contexto y (a cola.
ctx = cl.createAsomeAcontext02
B(e(e = cl.Comman&D(e(e0ctx2
2. Se carga e( arc*i7o .c(.
P U# co#te6to #ecesita !#a 4(atafor,a ,s !#o o 7arios .is4ositi7os y se !ti(i?a 4ara crear (as co(as .e e9ec!ci"#. Ostas so# (as
estr!ct!ras %!e 4er,ite# a( host ,a#.ar (os kernels a (os .is4ositi7os.
9 &os buffers se !ti(i?a# 4ara g!ar.ar (os .atos %!e ser# !ti(i?a.os 4or (os kernels co,o e#tra.a y sa(i.a.
10 &as co(as so# (as e#carga.as .e rece4ci"# y e#70o .e kernels a (os .isti#tos .is4ositi7os.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @E
pro'ram = cl.@ro'ram0ctx3 ca&enaConElConteni&o&eCF2.+(il&02
@. Se i#icia(i?a# (as 7aria+(es %!e se e#c!e#tra# e# e( host y (!ego se crea# (os
buffers %!e !ti(i?are,os 4ara e#tra.a y sa(i.a .e (os kernels.
# Se inicializan las variables del lado del CPU
alpha = n(mpy.float#"0valorGlpha2
o(tp(t = n(mpy.%eros01003 n(mpy.float#"2

# Creamos los buffers con las banderas que deseamos.
alphaA+(f = cl.H(ffer0ctx3 mf.IEGJAKIL;E > mf.CM@NAOMP;A@;I3
host+(f=alpha2
&estA+(f = cl.H(ffer0ctx3 mf.IEGJAKIL;E3 o(tp(t.n+ytes2
A. Por E(ti,o se e9ec!ta e( kernel y (!ego se to,a# s!s res!(ta.os.
pro'ram.verh(lst0B(e(e3 o(tp(t.shape3 0.0323 self.alphaA+(f3
...3 self.&estA+(f2
cl.enB(e(eAcopy0B(e(e3 o(tp(t3 &estA+(f2

EG+eri mento Ma+a Log sti co
$#te to.o, (o ,e9or ser0a sa+er %!3 es !# ,a4a (og0stico. -( ,a4a (og0stico es !#a
for,aci"# #or,a(i?a.a .e (a ec!aci"# .e Ber*!(st, %!e #os 4er,ite (a si,!(aci"# .e(
creci,ie#to .e !#a 4o+(aci"# Y
-ste ,a4a 4!e.e re4rese#tarse ,ate,tica,e#te co,o8 X
n+1
=X
n
( 1X
n
) , .o#.e8


es !# 7a(or %!e #os i#.ica (a re(aci"# e#tre (a #ata(i.a. y ,orta(i.a. .e (a
4o+(aci"# %!e esta,os si,!(a#.o.
X
n
es e( ta,a<o .e (a 4o+(aci"# e# e( ,o,e#to n
Po.e,os 7er %!e 7aria#.o e( (os res!(ta.os so# ,!y .isti#tos.
I a*ora e( c".igo f!e#te co,4(eto .e #!estro main.py8
# an !o"nson.
# "ttp#$$documen.tician.de$pyopencl$
import pyopencl as cl
import n(mpy
import pyla+
import ar'parse
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @V
class CF:
&ef AAinitAA0self2:
self.ctx = cl.createAsomeAcontext02
self.B(e(e = cl.Comman&D(e(e0self.ctx2
&ef loa&@ro'ram0self3 filename2:
f = open0filename3 9r92
fstr = "".join0f.rea&lines022
print fstr
self.pro'ram = cl.@ro'ram0self.ctx3 fstr2.+(il&02
&ef lo'isticQap0self3 alpha=0./3 x&=0."2:
mf = cl.memAfla's
self.alpha = n(mpy.float#"0alpha2
self.x& = n(mpy.float#"0x&2
self.o(tp(t = n(mpy.%eros01003 n(mpy.float#"2
self.alphaA+(f = cl.H(ffer0self.ctx3 mf.IEGJAKIL;E > mf.CM@NAOMP;A@;I3
host+(f=self.alpha2
self.x&A+(f = cl.H(ffer0self.ctx3 mf.IEGJAKIL;E > mf.CM@NAOMP;A@;I3
self.x&.n+ytes3 host+(f=self.x&2
self.&estA+(f = cl.H(ffer0self.ctx3 mf.IEGJAKIL;E3 self.o(tp(t.n+ytes2
&ef exec(te0self2:
self.pro'ram.verh(lst0self.B(e(e3 self.o(tp(t.shape3 0.0323
self.alphaA+(f3 self.x&A+(f3 self.&estA+(f2
cl.enB(e(eAcopy0self.B(e(e3 self.o(tp(t3 self.&estA+(f2
print "alpha: "3 self.alpha
print "xn: "3 self.x&
print "res(lts: "3 self.o(tp(t
if AAnameAA == "AAmainAA":
parser = ar'parse.Gr'(ment@arser0&escription=
9Fo'istic Qap )ith control parameter92
parser.a&&Aar'(ment0"$$alpha"3 &est="alpha"3 &efa(lt = 0./3
help=9;his option is (se& to set the alpha92
ar's = parser.parseAar's02
alphaLn = ar's.alpha

myFo'isticQap = CF02
myFo'isticQap.loa&@ro'ram0"verh(lst.cl"2
myFo'isticQap.lo'isticQap0alpha=alphaLn2
myFo'isticQap.exec(te02
pyla+.plot0myFo'isticQap.o(tp(t3 9ro$92
pyla+.ylim003 12
pyla+.text0*03 0."3 r9RSalpha = 4fR9 4 0myFo'isticQap.alpha22
pyla+.title0"P(ccessive Lterations of the lo'istic Qap"2
pyla+.sho)02
I e( c".igo .e( kernel verhulst.cl8
AAkernel voi& verh(lst0'lo+al float7 alpha3 'lo+al float7 x&3 'lo+al float7 o(tp(t2
{
float temp
int i&x = 'etAlocalAi&0026'etAlocalAsi%e0027'etA'ro(pAi&002
temp = x&80:
int i
for0i=0i<=i&xi662
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @W
{
temp = alpha80:7temp701$temp2
!
o(tp(t8i&x: = temp
!
5eferenci as - Li n)s I nteresantes
Q1R $afta+ '!#s*i, Je#e.ict Gaster, 2i,ot*y 'attso#, >a,es F!#g, a# Gi#s+!rg. OpenCL Pro!rammin!
8uide2 $..iso#-Ses(ey (2011).
Q2R Je#e.ict Gaster, &ee ;owes, a7i. =. Tae(i, Per*aa. 'istry, a#a Sc*aa. Hetero!eneous Computin!
@ith OpenCL, 'orga# Ta!f,a## (2011).
Q@R *tt4811,at*e,a.ticia#..e1software14yo4e#c(
QAR *tt4811g4g4!2.+(ogs4ot.co,.ar120121091efficie#t-co#7o(!tio#-o#-,!(ti.*t,(
25L PA5A 5EGIS#56= htt+=FF,it&l-F+a-oneerRhd
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& @M
E
Z
#
5
E
M
E

P
5
6
G
5
A
M
M
I
/
G
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
B1
-nit 1estin! con
PHP-nit y Py-nit
En la edicin 9EF de Hackers G De/elopers #a!a(ine
hicimos una introduccin al desarrollo diri!ido por
pruebas2 prometiendo hablar de Py-nit y PHP-nit en
una si!uiente entre!a0 Como lo prometido es deuda2
a7u% est, 1DD con Python y PHP0
Escrito por: Eu!enia "ahit ($r%!itecta G&$'P & $gi(e )oac*)
-!ge#ia es 4r7uitecta de Sot@are, docente i#str!ctora .e tec#o(og0as
8L4#P (GNU1&i#!6, $4ac*e, 'ySU&, Pyt*o# y P;P) y 4!ile coach (U2N)
es4ecia(i?a.a e# Scr!, y eVtre,e Progra,,i#g. 'ie,+ro .e (a 3ree
Sot@are 3oundation e i#tegra#te .e( e%!i4o .e Debian Hackers.
:ebs)
)!rsos .e 4rogra,aci"# a ista#cia8 www.c!rsos.e4rogra,acio#a.ista#cia.co,
Se+ 4erso#a(8 www.e!ge#ia+a*it.co,
Redes sociales)
2witter 1 /.e#ti.ca8 5eu!eniabahit
Prue,as 2ni tari as en P(P
6iste# 7arios frameworks 6U#it 4ara U#it 2esti#g e# P;P, 4ero si# .!.as, e( E#ico
%!e *a .e,ostra.o co#tar co# !#a gra# co+ert!ra .e c".igo, esta+i(i.a. y +!e#a
.oc!,e#taci"#, es P;PU#it. -( ,a#!a( oficia( .e P;PU#it (e# i#g(3s) 4!e.e
e#co#trarse e#8 *tt4811www.4*4!#it..e1,a#!a(1c!rre#t1e#1i#.e6.*t,(
-
Se 4!e.e i#sta(ar P;PU#it e# siste,as o4erati7os GNU1&i#!6, ,e.ia#te P-$=8
s(&o pear (p'ra&e @EGI
pear confi'$set a(toA&iscover 1
pear install pear.php(nit.&e/@O@Tnit
$!#%!e e# .istri+!cio#es +asa.as e# e+ia#, ta,+i3# 4!e.e *acerse .irecta,e#te
,e.ia#te (a i#sta(aci"# .e( 4a%!ete $%$unt co# a$t-get8
s(&o apt$'et install php(nit
Mtodos Assert de P(P2ni t
P;PU#it 4ro7ee !#a gra# ca#ti.a. .e ,3to.os assert, c!yas refere#cias 4o.e,os
e#co#trar e# e( )a40t!(o A .e( ,a#!a( oficia(8
*tt4811www.4*4!#it..e1,a#!a(1@.H1e#1writi#g-tests-for-4*4!#it.*t,(
$(g!#as caracter0sticas co,!#es .e (os ,3to.os assert, so#8
Ge#era(,e#te, 4or ca.a ,3to.o assert e6iste s! o4!esto8 assertC#ntans&' y
assertN#tC#ntans&'.
$ (a 7e?, ca.a ,3to.o assert .e+er reci+ir ,0#i,a,e#te !# 4ar,etro %!e ser
e( res!(ta.o .e e9ec!tar e( c".igo .e( SU2.
$.icio#a(,e#te, a ca.a ,3to.o assert( se (e 4!e.e 4asar co,o 4ar,etro
o4cio#a(, !# ,e#sa9e 4erso#a(i?a.o 4ara ser arro9a.o e# caso .e error
(ge#era(,e#te, ser e( E(ti,o 4ar,etro).
&os ,3to.os assert %!e re%!iere# e( 4aso .e .os 4ar,etros o+(igatorios
(7a(ores %!e .e+e# co,4ararse e#tre s0), ge#era(,e#te g!ar.a# e( sig!ie#te
or.e#8
meto&oGssert0RvalorAespera&o3 RvalorAreci+i&o2
-s .ecir, %!e e# esos casos, sie,4re e( 4ri,er 4ar,etro ser e( 7a(or es4era.o y
e( seg!#.o 4ar,etro, e( 7a(or reci+i.o 4or (a e9ec!ci"# .e( c".igo SU2.
Bea,os a(g!#os e9e,4(os 4!#t!a(es8
<Uphp
# %rc"ivo &estCase# BalanceContable_Test.php
reB(ireAonce 9HalanceConta+le.php9 # PT;
class HalanceConta+le;est exten&s @O@TnitA<rame)orkA;estCase {
p(+lic f(nction setTp02 {
Rthis$>covera'e = ne) HalanceConta+le02
Rthis$>covera'e$>alic(otaAiva = "1
!
$$ %ssert'quals()valor*esperado+ )valor*recibido,
p(+lic f(nction testAcalc(larAiva02 {
Rthis$>covera'e$>importeA+r(to = 1.00
Rres(lt = Rthis$>covera'e$>calc(larAiva02
Rthis$>assertEB(als0#1.3 Rres(lt2
!
$$ %ssert&rue()valor*recibido,
p(+lic f(nction testAalcan%a&oAporAimp(estoA&eAimportacionAconA1,002 {
Rthis$>covera'e$>importeA+r(to = 1,0
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& B@
Rres(lt = Rthis$>covera'e$>alcan%a&oAporAimp(estoA&eAimportacion02
Rthis$>assert;r(e0Rres(lt2
!
$$ %ssert-ull()valor*recibido,
p(+lic f(nction testAalcan%a&oAporAimp(estoA&eAimportacionAconA1*#02 {
Rthis$>covera'e$>importeA+r(to = 1*#
Rres(lt = Rthis$>covera'e$>alcan%a&oAporAimp(estoA&eAimportacion02
Rthis$>assertV(ll0Rres(lt2
!
!
U>
# Cdi.o SU&# BalanceContable.php
<Uphp
class HalanceConta+le {
p(+lic RimporteA+r(to
p(+lic Ralic(otaAiva
# Calcular /% sobre un importe bruto
p(+lic f(nction calc(larAiva02 {
Riva = Rthis$>alic(otaAiva / 100
Rneto = Rthis$>importeA+r(to 7 Riva
ret(rn Rneto
!
# Determinar si un importe pa.a impuesto de importacin
p(+lic f(nction alcan%a&oAporAimp(estoA&eAimportacion02 {
// importes mayores a 1.0 TPJ pa'an imp(esto
if0Rthis$>importeA+r(to > 1.02 {
ret(rn ;r(e
!
!

!
U>
Prue,as 2ni tari as en P-thon
yU#it es e( framework 6U#it e(egi.o .e for,a oficia( 4or Pyt*o# .es.e s! 7ersi"#
1.G.2. Si +ie# e6iste# ,!c*os otros, ge#era(,e#te est# .esti#a.os a a,4(iar (os
+e#eficios .e PyU#it 4ara (a rea(i?aci"# .e test ,s co,4(e9os, co,o e( caso .e
Pyo!+(es
11
-crea.o 4or )ar(os J(3-. 2o.a (a refere#cia so+re PyU#it se e#c!e#tra e# e(
,a#!a( oficia( .e Pyt*o# (e# i#g(3s)8 *tt4811.ocs.4yt*o#.org1(i+rary1!#ittest.*t,(
P
PyU#it #o #ecesita ser i#sta(a.o ya %!e .es.e (a 7ersi"# 2.1 for,a 4arte .e (a (i+rer0a
est#.ar .e Pyt*o#, a tra73s .e( ,".!(o !#ittest.
11 *tt4811www.car(os+(e.co,1category1software-.e7e(o4,e#t14y.o!+(es1
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& BB
Mtodos Assert de P-2ni t
U#a (ista co,4(eta .e (os ,3to.os assert .e PyU#it 4!e.e e#co#trarse e# (a
.oc!,e#taci"# so+re unttest .e Pyt*o# e# (a sig!ie#te U=&8
*tt4811.ocs.4yt*o#.org1(i+rary1!#ittest.*t,(Fassert-,et*o.s
U#a .ifere#cia 4artic!(ar %!e e6iste e#tre PyU#it y otros fra,ewor5s co,o P;PU#it, es
%!e #os 4er,ite efect!ar afir,acio#es, co# !#a si#ta6is +asta#te si,4(e, si# #ecesi.a.
.e rec!rrir a ,3to.os assert es4ec0ficos8
assert res(lta&o == valorAespera&o
-# !# e9e,4(o ,s co#creto, 4o.r0a,os 7er(o as0 (.o#.e coverage ser (a i#sta#cia a(
o+9eto .e( SU2)8
assert self.covera'e.s(marA&osAn(meros0.3 1.2 == "0
Ctra .ifere#cia f!#.a,e#ta( co# P;PU#it, es %!e e( ,3to.o assertWIgualdad>, 4osee s!
#o,+re e# si#g!(ar8
P0PUnit#
assertEB(als0Ra3 R+2
PyUnit#
asserEB(al0a3 +2
$(g!#as caracter0sticas co,!#es .e (os ,3to.os assert, so#8
$( ig!a( %!e co# P;PU#it, ge#era(,e#te, 4or ca.a ,3to.o assert e6iste s!
o4!esto8 assertE)ual&' y assertN#tE)ual&'.
2a,+i3#, sig!ie#.o #!e7a,e#te (a (0#ea .e P;PU#it, ca.a ,3to.o assert .e+er
reci+ir ,0#i,a,e#te !# 4ar,etro %!e ser e( res!(ta.o .e e9ec!tar e( c".igo
.e( SU2 y o4cio#a(,e#te, co,o E(ti,o 4ar,etro, 4!e.e reci+ir !# ,e#sa9e
4erso#a(i?a.o 4ara ser arro9a.o e# caso .e error.
$ .ifere#cia .e P;PU#it, (os ,3to.os assert %!e re%!iere# e( 4aso .e .os
4ar,etros o+(igatorios (7a(ores %!e .e+e# co,4ararse e#tre s0), ge#era(,e#te
g!ar.a# e( sig!ie#te or.e#8
meto&oGssert0valorAreci+i&o3 valorAespera&o2
-s .ecir, %!e e# esos casos, sie,4re e( 4ri,er 4ar,etro ser e( 7a(or reci+i.o
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& B0
4or (a e9ec!ci"# .e( c".igo SU2 y e( seg!#.o 4ar,etro, e( 7a(or es4era.o.
Bea,os e( e9e,4(o rea(i?a.o a#terior,e#te e# P;P, 4ero esta 7e?, e# Pyt*o# co#
PyU#it8
# 121 codin.# utf13 121
# %rc"ivo &estCase# test_balance_contable.php
import (nittest
from +alanceAconta+le import HalanceConta+le
class HalanceConta+le;estCase0(nittest.;estCase2:
# setUp(,
&ef setTp0self2:
self.covera'e = HalanceConta+le02
self.covera'e.alic(otaAiva = "1
# assert'qual(valor*recibido+ valor*esperado,
&ef testAcalc(larAiva0self2:
self.covera'e.importeA+r(to = ".00
res(lt = self.covera'e.calc(larAiva02
self.assertEB(al0res(lt3 .".2
# %ssert&rue(valor*recibido,
&ef testAalcan%a&oAporAimp(estoA&eAimportacionAconA1,00self2:
self.covera'e.importeA+r(to = 1,0
res(lt = self.covera'e.alcan%a&oAporAimp(estoA&eAimportacion02
self.assert;r(e0res(lt2
# %sserts-one(valor*recibido,
&ef testAalcan%a&oAporAimp(estoA&eAimportacionAconA1*#0self2:
self.covera'e.importeA+r(to = 1*#
res(lt = self.covera'e.alcan%a&oAporAimp(estoA&eAimportacion02
self.assertLsVone0res(lt2
# -ecesario para correr los test si es llamado por l4nea de comandos
if AAnameAA == "AAmainAA":
(nittest.main02
/%tese que el mtodo assertEquals de P(P2nit3 se denomina assertEqual Cen singularD en P-2nit - que en
reem+la"o del mtodo assert/ull3 P-2nit +ro+one assertIs/one Cesto es de,ido a que P-thon no retorna *alores
nulos como tales3 sino como :/one<D&
# 121 codin.# utf13 212
# Cdi.o SU&# balance_contable.php
class HalanceConta+le0o+ject2:
&ef AAinitAA0self2:
self.importeA+r(to = 0
self.alic(otaAiva = 0
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& B?
# Calcular /% sobre un importe bruto
&ef calc(larAiva0self2:
iva = self.importeA+r(to 7 self.alic(otaAiva / 100
ret(rn iva
# Determinar si un importe pa.a impuesto de importacin
&ef alcan%a&oAporAimp(estoA&eAimportacion0self2:
# importes mayores a 1.0 TPJ pa'an imp(esto
if self.importeA+r(to > 1.0:
ret(rn ;r(e
:!escu,ri endo< #est en P-thon
es.e (a 7ersi"# 2.7 .e Pyt*o#, ya #o es #ecesario rea(i?ar X,a#io+rasY o crear 2est
S!ites, co# e( E#ico fi# .e correr to.os (os 2est .e #!estra a4(icaci"#, .e !# so(o 4aso.
2o.os (os test .e !#a a4(icaci"#, 4!e.e# correrse ,e.ia#te e( co,a#.o !s"#*er8
e('enia1cocochito:W/proyectosR python $m (nittest &iscover
!s"#*er( X.esc!+rirY to.os (os test, i.e#tific#.o(os 4or e( #o,+re .e( arc*i7o8 .e+e
co,e#?ar 4or e( 4refi9o XtestY &!s"#*er !ti(i?a (a e64resi"# reg!(ar testZ.4y 4ara
i.e#tificar 2est )ases). $.e,s, .e+e te#erse e# c!e#ta %!e e( #o,+re .e (os ,3to.os
.e 4r!e+a, ta,+i3# .e+e# co,e#?ar 4or e( 4refi9o test.
Si# e,+argo, 4o.r0a 4rete#.er e9ec!tarse so(o !# 2est)ase8
e('enia1cocochito:W/proyectosR python testA+alanceAconta+le.py
C !# test e# 4artic!(ar .e !#a c(ase 2est)ase8
e('enia1cocochito:W/proyectosR python testA+alanceAconta+le.py
HalanceConta+le;estCase.testAcalc(larAiva
2a,+i3# es 4osi+(e, 4asar e( 4ar,etro -* a fi# .e o+te#er !# re4orte ,s .eta((a.o8
e('enia1cocochito:W/proyectosR python $m (nittest &iscover $v
testAalcan%a&oAporAimp(estoA&eAimportacionAconA1*#
0;est.testA+alanceAconta+le.HalanceConta+le;estCase2 ... ok
testAalcan%a&oAporAimp(estoA&eAimportacionAconA1,0
0;est.testA+alanceAconta+le.HalanceConta+le;estCase2 ... ok
testAcalc(larAiva 0;est.testA+alanceAconta+le.HalanceConta+le;estCase2 ... ok
$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
Ian # tests in 0.001s
MX
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& B9
M
A
/
2
A
L

!
E

P
E
5
L
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
BE
#anual de Perl ;Parte
$$$<
-na de las caracter%sticas m,s importantes de Perl es2
7ui(,s2 su potencia con la e.presiones re!ulares0 En
esta entre!a /eremos cmo uncionan0
Escrito por: #ar%a &os' #ontes D%a( ($rc*era & Progra,a.ora)
-st!.ia#te .e Gra.o /#ge#ier0a e# 2ec#o(og0a .e (a i#for,aci"#. 23c#ico
e# i#for,tica .e gesti"#. 'o#itora FPC. oce#te .e 4rogra,aci"#
Pyt*o# y Scratc* 4ara #i<os .e H-12 a<os. $cti7ista .e( software (i+re y
c!(t!ra (i+re.
:ebs)
J(og8 *tt4811arc*#i#fa.+(ogs4ot.co,.es1
Redes sociales)
2witter8 5##ontesDia(
#a e64resi"# reg!(ar es !# 4atr"# %!e .escri+e !# co#9!#to .e ca.e#as. &as
e64resio#es reg!(ares se co#str!ye# co,+i##.o(as co# ciertos o4era.ores 4ara
a!,e#tar (a co,4(e9i.a.. U
Po.e,os .isti#g!ir tres !sos .e e64resio#es reg!(ares8
Com+araci %n
Nos 4er,ite# sa+er si !# 4atr"# se e#c!e#tra .e#tro .e !#a ca.e#a. S! si#ta6is es (a
sig!ie#te8
Rvar =~ /patrYn/;
Para (a 7aria+(e HI ((a 7aria+(e 4or .efecto), 4o.e,os 4o#er .irecta,e#te (a e64resi"#
reg!(ar8
/patrYn/;
)o,o 4o.e,os 7er, (os 4atro#es se e#cierra# e#tre (J). -# e( caso .e %!erer co#ocer si
#o se e#c!e#tra, !ti(i?are,os e( o4era.or >K.
U# e9e,4(o8
Rca&ena = "Esto es (na pr(e+a"
if 0 Rca&ena =W /pr(e+a/ 2 {
print "El patrYn se enc(entra en la ca&enaSn"
!
if 0 Rca&ena Z= /pr(e+a/ 2 {
print "El patrYn no se enc(entra en la ca&enaSn"
!
-# Per(, e( o4era.or 4ara i#.icar %!e 7a,os a a4(icar !#a e64resi"# reg!(ar es LK. -(
4atr"# .e+e ir e#tre (J)8
Rca&ena =W /patrYn/
5uscar4a si e6iste patrn dentro de $cadena.
-( o4era.or >L .e7!e(7e fa(so si e( 4atr"# se e#c!e#tra e# (a ca.e#a. S! sig#ifica.o
7e#.r0a a ser8 Si ca.e#a no contiene 4atr"#.
-# co,+i#aci"# co# (os caracteres %!e %!era,os +!scar, 4o.e,os !ti(i?ar
co,+i#acio#es co# ,etacaracteres. )o# e((os 4o.re,os i#.icar c!#tas 7eces
%!ere,os %!e se re4ita !# carcter, !ti(i?ar co,o.i#es, +!scar a( 4ri#ci4io o fi#a( .e (a
ca.e#a, etc.
Ba,os a 7er(os co# !# e9e,4(o8
Rca& = 9cometa cometas 1cometa metas9
# 7d 5usca un d4.ito. 'n may8scula+ 7D+ un carcter no d4.ito.
if 0Rca& =W /S&/2 { #res(lta&o:
print "R[<R->R9Sn" #cometa cometas <1>cometa metas
!
# 79 Un carcter alfanum:rico. 'n may8scula+ 7;+ un carcter no alfanum:rico.
if 0Rca& =W /S)/2 { #Ies(lta&o:
print "R[<R->R9Sn" #<c>ometa cometas 1cometa metas
!
# . Cualquier carcter que no sea retorno de carro
if 0Rca& =W / .cometa/2 { #Ies(lta&o:
print "R[<R->R9Sn" #cometa cometas< lcometa> metas
!
# 7s Un carcter de espaciado (espacio en blanco+ salto de l4nea+ tabulador+
# retorno de carro,. 'n may8scula si.nifica lo contrario.
if 0Rca& =W /Ss/2 { #Ies(lta&o:
print "R[<R->R9Sn" #cometa< >cometas 1cometa metas
!
;e !ti(i?a.o !#as 7aria+(es es4ecia(es, s! co#te#i.o es8
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& BV
$` Fa parte &e la ca&ena anterior al inicio &el patrYn encontra&o.
$& El patrYn.
$' El resto &e la ca&ena.
-# ocasio#es #os i#teresa +!scar (istas o ra#gos .e caracteres. Para esto !ti(i?are,os
(os corc*etes QR. U#os e9e,4(os .e ra#gos8
1.$ Fetras min\sc(las: a$%
".$ Fetras may\sc(las: G$]
#.$ ;o&as las letras: a$%G$]
*.$ J^'itos: 0$/
Uti(i?aci"# .e (os QR8
# <= Para buscar listas o ran.os de caracteres.
if 0Rca& =W /8aeio(:/2 { #H(sca (na vocal. Ies(lta&o:
print "R[<R->R9Sn" #c<o>meta cometas 1cometa metas
!
Ctra .e (as cosas %!e 4o.e,os *acer es a<a.ir c!#tas 7eces %!ere,os %!e se re4ita
!# carcter o !#a (ista y ta,+i3# es4ecificar (0,ites .e 4a(a+ra o ca.e#a8
# > Debe coincidir con el principio de la cadena
if 0Rca& =W /?co/2 { #_Empie%a la ca&ena con coU. Ies(lta&o:
print "R[<R->R9Sn" #<co>meta cometas 1cometa metas
!
# b l4mites de una palabra
if 0Rca& =W /S+co/2 { #@ala+ras B(e empiecen con co. Ies(lta&o:
print "R[<R->R9Sn" #<co>meta cometas 1cometa metas
!
if 0Rca& =W /taS+/2 { #@ala+ras B(e terminen con ta. Ies(lta&o:
print "R[<R->R9Sn" #come<ta> cometas 1cometa metas
!
# 5 interior de una palabra
if 0Rca& =W /SHco/2 { #@ala+ras B(e conten'an co en el principio:
print "R[<R->R9Sn" #cometa cometas 1<co>meta metas
!
if 0Rca& =W /taSH/2 { #@ala+ras B(e conten'an ta al final:
print "R[<R->R9Sn" #cometa come<ta>s 1cosmeta metas
!
# ?n+m@ -8mero de veces+ m4nimo y m6imo+ que se debe repetir un carcter.
# ?n+@ -8mero m4nimo de veces+ sin l4mite superior.
# ?n@ -8mero e6acto de veces.
# 2 's equivalente a ?A+@+ se repite A ms veces.
# B 's equivalente a ?C+@+ se repite al menos una vez.
# D 's equivalente a ?A+C@+ aparece+ cmo muc"o+ una vez.

UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& BW
Rca& = "cometa cometas 1cococometata cococometas"
if 0Rca& =W /S+0co2{"3#!/2 { #D(e empiece con co3 repeti&a min "3 max # veces
print "R[<R->R9Sn" #cometa cometas 1cococometata <cococo>metas
!
if 0Rca& =W /0ta2{"3#!S+/2 { #D(e termine con ta3repeti&a min "3 max # veces:
print "R[<R->R9Sn" #cometa cometas 1cococome<tata> cococometas
!
# Eperador F (or,. 'stablece alternativas#
if 0Rca& =W /0SHco2>0taSH2/2 { #Contiene co al principio o ta al final:
print "R[<R->R9Sn" #cometa come<ta>s 1cometa metas
!
El sm,olo C[D tiene dos significados& 2no es indicar +rinci+io de cadena +ero si a+arece dentro de los corchetes3
\[con.unto]3 significa que no eGista ese con.unto de caracteres en la cadena&
Susti tuci %n
Nos 4er,ite, !#a 7e? e#co#tra.o !# 4atr"#, s!stit!ir(o 4or !#a ca.e#a. Para e((o se
!ti(i?a (a sig!ie#te si#ta6is8
s/patrYn/ca&ena/opciones
-9e,4(o8
Rca& = "cometa cometas 1cococometata cococometas"
Rca& =W s/0co2{"3#!/co/'i
print "El res(lta&o es Rca&"
# )cad contiene a"ora# cometa cometas Ccometata cometas
&as o4cio#es %!e .is4o#e,os8
$g @or &efecto3 en la primera oc(rrencia &el patrYn se para la +\sB(e&a y
s(stit(ciYn. Esta opciYn es para B(e +(sB(e to&as las oc(rrencias.
$i L'nora may\sc(las y min\sc(las.
$e eval\a la expresiYn.
#ransl aci %n
=ee,4(a?a ca.a carcter .e (a (ista i#icia( co# (os caracteres .e (a (ista fi#a(. e7!e(7e e(
#E,ero .e i#terca,+ios rea(i?a.os. U# e9e,4(o8
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& BM
#&ransforma una cadena a may8sculas#
Rca& =W tr/a$%/G$]/
#contar cuntas C aparecen#
Rn =Rca& =W tr/C/C2
5ecordando +atrones
is4o#e,os .e !#as 7aria+(es es4ecia(es 4ara refere#ciar a (os 4atro#es. &os 4atro#es
4o.e,os agr!4ar(os e#tre 4ar3#tesis, .e for,a %!e ca.a 7aria+(e *ar refere#cia a !#
gr!4o.
Para !ti(i?ar f!era .e (a e64resi"#, .is4o#e,os .e (as 7aria+(es !, "#n, sie#.o n e(
#E,ero .e gr!4os. e#tro .e (a e64resi"#, 4o.e,os !ti(i?ar $!,$"...$n.
E+emplo8 Ba,os a +!scar (as 4a(a+ras %!e e,4iece# 4or CO y co#te#ga# 14 , .es4!3s,
7a,os a i#terca,+iar esos 7a(ores 4ara to.as (as oc!rre#cias e ig#ora#.o
,ayEsc!(as1,i#Esc!(as8
Rca& = `CMQE;G CMQE;GPa
Rca& =W s/0co20S)720ta2/S#S"S1/'i
print `Rca&a
#resultado# &%G'CE &%G'CES
)o# esto co#c(!ye esta e#trega. -# (a 4r"6i,a os *a+(ar3 .e c",o !ti(i?ar (os fic*eros y
(as f!#cio#es.
Enlaces de inter's)
*tt4811www.4er(.co,1
*tt4811www.c4a#.org1
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 01
!
E
S
A
5
5
6
L
L
6

!
E
S
6
4
#
;
A
5
E
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
0@
Coni!urando 8$1 en
-buntu Ser/er
Hace mucho tiempo2 en mi traba+o2 ten%amos el !ra/e
problema de no poder mane+ar las /ersiones de los
desarrollos0 9o altaba ese d%a apocal%ptico en el 7ue
t'cnicamente perd%as m,s de un mes de traba+o2
por7ue a al!uien se le ocurr%a subir sus cambios y los
tuyos2 simplemente2 7uedaban en el ol/ido0 Esto se
arre!l con el control de /ersiones y a7u% les
mostrar' cmo2 en un ser/idor -buntu2 coni!urar
8$1) uno de los sistemas de control de /ersiones m,s
usados2 creado por nada m,s y nada menos 7ue Linus
1or/alds0
Escrito por: $ndira "ur!a (/#ge#iera .e Siste,as)
/#.ira es $n!0 de Sistemas .e PerE. Gestora .e Proyectos .e .esarro((o
.e software, pro!ramadora PHP, a#a(ista, #!e7a a,a#te .e (as
metodolo!%as M!iles. $*ora e#7!e(ta e# !#a #!e7a a7e#t!ra8 s! 4ro4ia
e,4resa [$C Pro+ects[ .e.ica.a a( .esarro((o .e Software.
:ebs)
$+o!t.,e8 *tt4811a+o!t.,e1i#.ira+,
Redes sociales)
2witter8 5indirabm
it es !# software .e co#tro( .e 7ersio#es .ise<a.o 4or &i#!s 2or7a(.s, 4ero \U!3
*ace .ifere#te a G/2 .e otros siste,as si,i(ares] G
G/2 es !# siste,a .istri+!i.o. -sto sig#ifica %!e e6iste# re4ositorios e# ca.a !#o .e (os
!s!arios (.esarro((a.ores). Perso#a(,e#te, co#si.ero %!e eso *ace %!e sea ,!c*o ,as
fci( s! tra+a9o, .e+i.o a %!e se 4!e.e# *acer ,!c*os commits (oca(es (agr!4ar ca,+ios
y g!ar.ar(os) a#tes .e e#7iar (os ca,+ios a( ser7i.or .e .esarro((o o .e 4ro.!cci"#
(4!s*). -sto es ge#ia( .a.o %!e ,is ca,+ios so(o afecta# a ,i re4ositorio (oca(. Si e(
ca,+io %!e se .esea *acer, es (o s!ficie#te,e#te i,4orta#te, se 4!e.e crear !# #!e7o
+ra#c* (ra,a .o#.e 4!e.o *acer ca,+ios ,ayores). -sto #o 4asa+a co# (os siste,as
ce#tra(i?a.os e# (os c!a(es e( re4ositorio esta+a e# !# so(o (!gar (ser7i.or) y 4or (o
ta#to, c!a#.o *ac0as !# commit te#0as %!e cerciorarte .e %!e (os #!e7os ca,+ios #o
Xro,4iera#Y (os .e otros.
$*ora %!e ya sa+e,os %!3 es G/2 7a,os a i,4(e,e#tar(o. Pri,ero %!e to.o es
#ecesario e#te#.er c",o tra+a9a G/2 y sa+er c",o es (a .istri+!ci"#.
)o,o se 4!e.e 7er e# (a i,age# .e a+a9o, G/2 a0s(a to.os (os re4ositorios .e ta( ,a#era
%!e ca.a !#o 4!e.a tra+a9ar .e for,a i#.e4e#.ie#te. $.e,s te#e,os %!e co#tar co#
!# re4ositorio ce#tra(, e( c!a( te#.r to.os (os ca,+ios rea(i?a.os. Por s!4!esto, ca.a
.esarro((a.or 4o.r0a tra+a9ar e# !#a ra,a (+ra#c*). Us!a(,e#te, e( ser7i.or .e
4ro.!cci"# tie#e s! 4ro4ia ra,a as0 co,o e( .e .esarro((o.
Confi guraci %n de un re+osi tori o central Cser *i dorD
Ba,os a co#fig!rar !# re4ositorio ce#tra( y .os re4ositorios (oca(es 4ara (os
.esarro((a.ores %!e tra+a9e# e# 3(.
nstalar H&
root1&ev:W# s(&o apt$'et install 'it
Confi.uracin de usuarios
root1&ev:W# 'it confi' $$'lo+al (ser.name "Gr'os"
root1&ev:W# 'it confi' $$'lo+al (ser.email ar'os1h&.com
nstalacin de openss" (necesario para transferir datos mediante el protocolo SS0,
root1&ev:W# apt$'et install openssh$server
Creacin del usuario I.itI (propietario del repositorio,
root1&ev:W# a&&(ser 'it
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 0B
)o#fig!ra,os e( ser7i.or 4ara a!te#ticar#os ,e.ia#te ((a7es 4E+(icas e# 7e? .e *acer(o
co# co#trase<as.
%brimos el arc"ivo Iss"d*confi.I
root1&ev:W# nano /etc/ssh/ssh&Aconfi'
%.re.amos las si.uientes l4neas#
@(+keyG(thentication yes
G(thori%e&Xeys<ile .ssh/a(thori%e&Akeys
$*ora, crea,os (as ((a7es 4E+(icas8
Cambiamos al usuario I.itI que creamos anteriormente
root1&ev:W# s( 'it
-os movemos al I"omeI del usuario
'it1&ev:/home/ar'osR c& W
Creamos la carpeta oculta Iss"I para almacenar las llaves p8blicas
'it1&ev:WR mk&ir .ssh
Creamos el arc"ivo Iaut"orized*JeysI#
'it1&ev:WR to(ch .ssh/a(thori%e&Akeys
Creamos una carpeta para .uardar las llaves p8blicas que nos env4en+ as4 tendremos
un mejor control de quienes se estn comunicando con nuestro servidor.
'it1&ev:WR mk&ir &esarrolla&ores
Fi#a(,e#te, creare,os !# .irectorio %!e a(,ace#ar #!estro re4ositorio8
'it1&ev:WR mk&ir &ev
'it1&ev:WR c& &ev
$ co#ti#!aci"#, i#icia(i?a,os #!estro 4ri,er 4royecto, a( %!e ((a,are,os Xcro#osY8
'it1&ev:W/&evR mk&ir cronos.'it
'it1&ev:W/&ev/cronos.'itR c& cronos.'it
'it1&ev:W/&ev/cronos.'itR 'it $$+are init
;e,os i#icia(i?a.o !# re4ositorio 7ac0o %!e se !t(i?ar co,o re4ositorio ce#tra(. $%!0
e#co#trar# to.os (os commit %!e 7aya# rea(i?a#.o a( 4royecto, si# e,+argo este
re4ositorio #o se !sa 4ara .esarro((ar.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 00
Confi guraci %n de l os re+osi tori os l ocal es
Las siguientes instrucciones de,er$n seguirse en el ordenador de cada uno de los desarrolladores
-( 4ri,er 4aso, ser i#sta(ar y co#fig!rar G/2.
root1jose:W# apt$'et install 'it
root1jose:W# 'it confi' $$'lo+al (ser.name "bose"
root1jose:W# 'it confi' $$'lo+al (ser.email jose1h&.com
$ co#ti#!aci"#, ge#era,os (a ((a7e 4E+(ica y (a e#7ia,os a( ser7i.or8
root1jose:W# ssh$key'en $t rsa
Nos 4i.e !#a frase c(a7e 4ara !sar (a ((a7e, esta tie#e %!e ser ,ayor a A .0gitos. &!ego,
e#7ia,os (a ((a7e 4E+(ica a (a car4eta !esarr#lla!#res e# #!estro ser7i.or.
root1jose:W# scp /root/.ssh/i&Arsa.p(+ 'it11/".1,5.1./:&esarrolla&ores/joseArsa.p(+
$ co#ti#!aci"#, e# e( ser7i.or, agregare,os (a ((a7e e#7ia.a a aut%#r+e!,keys8
'it1&ev:WR cat &esarrolla&ores/joseArsa.p(+ >> .ssh/a(thori%e&Akeys
N!e7a,e#te, e# e( or.e#a.or .e( .esarro((a.or, creare,os !# .irectorio 4ara e(
4royecto8
root1jose:W# mk&ir cronos
root1jose:W# c& cronos/
%"ora a.re.aremos un arc"ivo como prueba
root1jose:W/cronos# echo "hola OJ :@ " >> IEGJQE
nicializamos .it
root1jose:W/cronos# 'it init
%.re.ar todos los arc"ivos que se desea enviar al servidor
&ambi:n se puede enviar arc"ivo por arc"ivo o por tipo de arc"ivos.
root1jose:W/cronos# 'it a&& .
'nviamos nuestro primer commit
root1jose:W/cronos# 'it commit $m "@r(e+a &el primer commit"
%.re.amos la ruta del repositorio central
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 0?
root1jose:W/cronos# 'it remote a&& ori'in 'it11/".1,5.1./:W/&ev/cronos.'it
'nviamos los cambios al repositorio central
root1jose:W/cronos# 'it p(sh ori'in master
Ke pedir que in.rese la frase con la que creo la clave p8blica
Para %!e otros .esarro((a.ores 4!e.a# rec!4erar (os ca,+ios e#7ia.os, se !ti(i?a e(
co,a#.o X4!((Y (e# 7e? .e 4!s*)8
root1jose:W/cronos# 'it p(ll ori'in master
Para 7is!a(i?ar e( *istoria( .e ca,+ios se 4!e.e !ti(i?ar !#a GU/ co,o GitSe+ o si#o, 4or
(0#ea .e co,a#.os ,e.ia#te gt l#g8
root1jose:W/cronos# 'it lo' $$stat
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 09
M
A
/
2
A
L

!
E

A
5
C
(

L
I
/
2
Z
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
0E
P,sate a 89-JLinu.
con 4rch Linu.) NOu'
es 4"SP y000 N4-RP
-na de las cosas 7ue hacen 4rch especial es su
sistema de ports2 4"S y el Q4-RR2 el repositorio
comunitario2 donde podemos encontrar multitud de
pa7uetes e incluso subir a7uellos 7ue creemos
nosotros0 Veamos cmo utili(arlos0
Escrito por: #ar%a &os' #ontes D%a( ($rc*era & Progra,a.ora)
-st!.ia#te .e Gra.o /#ge#ier0a e# 2ec#o(og0a .e (a i#for,aci"#. 23c#ico
e# i#for,tica .e gesti"#. 'o#itora FPC. oce#te .e 4rogra,aci"#
Pyt*o# y Scratc* 4ara #i<os .e H-12 a<os. $cti7ista .e( software (i+re y
c!(t!ra (i+re.
:ebs)
J(og8 *tt4811arc*#i#fa.+(ogs4ot.co,.es1
Redes sociales)
2witter8 5##ontesDia(
# $rc*, a.e,s .e (os re4ositorios co# (os 4a%!etes ya co,4i(a.os, .is4o#e,os
.e !# ti4o ports si,i(ar a( .e (os siste,as ZJS8 e( $JS. Jas#.ose e# $JS, $rc*
ofrece !# re4ositorio co,!#itario, $U=, .o#.e 4o.er s!+ir, 7otar y e#co#trar
software %!e aE# #o *a 4asa.o a (os re4ositorios.
-
HIu son l os +ortsJ HIu es ABSJ
U# port #o es ,s %!e !#a car4eta co# e( #o,+re .e( software a i#sta(ar, %!e co#tie#e
a(g!#os arc*i7os o scripts co# (as i#str!ccio#es #ecesarias 4ara co#str!ir e( software
.es.e e( c".igo f!e#te. $s0, e# estos siste,as, e9ec!ta#.o !# s"(o co,a#.o, make
install, i#sta(a,os e( software.
-( $JS es !# r+o( .e car4etas, %!e se e#c!e#tra e# -*ar-a.s, .o#.e estar# to.os (os
/0123456 corres4o#.ie#tes a (os 4a%!etes %!e se e#c!e#tra# co,4i(a.os e# (os
re4ositorios. e#tro .e -*ar-a.s e#co#tra,os (as car4etas corres4o#.ie#tes a ca.a
re4ositorio &"#re( "#mmunty( e7tra8'. e#tro .e ca.a !#o, (as car4etas
corres4o#.ie#tes a (os #o,+res .e (os 4a%!etes res4ecti7os %!e *aya e# ese
re4ositorio.
)a.a car4eta co#tie#e e( /0123456 co# (a .irecci"# .e .escarga y (as i#str!ccio#es .e
co,4i(aci"#, a.e,s .e otros arc*i7os co# i#str!ccio#es .e i#sta(aci"#. Po.e,os e.itar
e( /0123456 y a.a4tar(o a #!estras #ecesi.a.es.
Uti(i?are,os makepkg 4ara crear e( 4a%!ete, %!e ser i#sta(a.o co# pacman .es4!3s. $%!0
es .o#.e 4o.e,os a4(icar o4ti,i?acio#es .e co,4i(aci"#.
Para %!e 4o.a,os !ti(i?ar $JS, .e+e,os i#sta(ar(o8
# pacman $P a+s
Para acti7ar (os re4ositorios %!e %!ere,os est3# .is4o#i+(es, e.itare,os
-et"-a.s."#n9 y, e# (a 7aria+(e RE/O:, %!itare,os (acti7ar) o 4o#.re,os (.esacti7ar) !#
(^) a ca.a re4ositorio %!e a4arece e# (a (ista8
IE@MP=0core extra comm(nity m(ltili+ Ztestin' Zcomm(nity$testin' Zm(ltili+$testin'2
2a#to 4ara .escargar e( r+o( co,o 4ara act!a(i?ar(o, +asta e9ec!tar8
# a+s
$*ora 7a,os a crear !#a car4eta .o#.e co4iare,os e( co#te#i.o .e( 4a%!ete %!e
%!ere,os crear. Por e9e,4(o8
R mk&ir W/a+s
R cp $r /var/a+s/core/lin(x W/a+s
Ia 4o.e,os rea(i?ar (os ca,+ios %!e #ecesite,os e# e( /0123456.
Creando el +aquete= ma)e+)g
&o 4ri,ero %!e .e+e,os *acer es re7isar #!estro -et"-make$kg."#n9 y 4erso#a(i?ar e(
ca,4o .e( e,4a%!eta.or. $s0 te#.re,os !# co#tro( so+re %!3 4a%!etes *e,os crea.o
#osotros8
#$$ @acka'er: name/email of the person or or'ani%ation +(il&in' packa'es
@GCXGcEI="nom+re <correo1ejemplo.com>"
Po.e,os o4ti,i?ar (a co,4i(aci"# esta+(ecie#.o (as CF5A1: y C;;F5A1: co# (os 7a(ores
so4orta.os 4or #!estra ar%!itect!ra. Proce.ere,os .e (a sig!ie#te ,a#era8
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 0V
R 'cc $march=native $E $v $ </&ev/n(ll ">-1 > se& $n 9s/.7 $v $ //p9
Nos .e7o(7er a(go 4areci.o a8
$march=nocona $mcx1, $msahf $mno$mov+e $mno$aes $mno$pclm(l $mno$popcnt $mno$a+m
$mno$l)p $mno$fma $mno$fma* $mno$xop $mno$+mi $mno$+mi" $mno$t+m $mno$avx $mno$avx"
$mno$sse*." $mno$sse*.1 $mno$l%cnt $mno$r&rn& $mno$f1,c $mno$fs's+ase $$param l1$
cache$si%e=1, $$param l1$cache$line$si%e=,* $$param l"$cache$si%e="0*5
$mt(ne=nocona
)o# estos .atos, e( 7a(or .e #!estro CF5A1: y C;;F5A1: ser8
C<FGcP="-march=nocona -mtune=generic -O2 -pipe $mcx1, $msahf $mno$mov+e $mno$aes
$mno$pclm(l $mno$popcnt $mno$a+m $mno$l)p $mno$fma $mno$fma* $mno$xop $mno$+mi
$mno$+mi" $mno$t+m $mno$avx $mno$avx" $mno$sse*." $mno$sse*.1 $mno$l%cnt $mno$r&rn&
$mno$f1,c $mno$fs's+ase $$param l1$cache$si%e=1, $$param l1$cache$line$si%e=,*
$$param l"$cache$si%e="0*5a
Cdd<FGcP="R{C<FGcP!"
-s i,4orta#te ca,+iar mtune a generic y !#a +!e#a i.ea, a<a.ir -O2 -pipe.
Si .is4o#e,os .e !# e%!i4o co# ,s .e !# #Ec(eo, 4o.e,os ,o.ificar e( 7a(or .e
MA0EF5A1:. )o,4ro+a,os e( #E,ero .e #Ec(eos co# nproc, .esco,e#ta,os (%!ita#.o (a
F) (a 7aria+(e MA0EF5A1: y esta+(ece,os s! 7a(or a j<n=mer#,n$r#">. Por e9e,4(o, si
nproc #os .e7!e(7e A, .e+e,os .e9ar e( 7a(or8
QGXE<FGcP="$j*"
Para agi(i?ar (as co,4i(acio#es co# g"", 4o.e,os !ti(i?ar (a *erra,ie#ta ccache8
# pacman $P ccache
-.ita,os -et"-make$kg."#n9 y, e# (a 7aria+(e 23456EN?, e(i,i#a,os (a (^) .e ccache,
%!e.a#.o .e for,a si,i(ar a8
HTLFJEVe=0fakeroot Z&istcc color ccache check Zsi'n2
U#a 7e? %!e *e,os .e9a.o #!estro -et"-make$kg."#n9 acor.e a #!estras #ecesi.a.es,
4roce.e,os a crear e( 4a%!ete.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 0W
Sig!ie#.o co# e( e9e,4(o a#terior, .e#tro .e (a car4eta @-a.s-lnu7, e9ec!ta,os co,o
!s!ario8
R makepk' $s
)rear !# arc*i7o co# (a e6te#si"# $kg.tar.7+, e( c!a( i#sta(are,os co#8
# pacman $T <nom+reA&eApaB(ete>.pk'.tar.x%
Po.e,os *acer esto co# !#a so(a or.e#8
R makepk' $si
U#a 7e? crea.o, ((a,ar a pacman 4ara i#sta(ar e( 4a%!ete.
/6#A= Para que un usuario +ueda instalar +aquetes con ma)e+)g C+ar$metro R s - R i D3 es necesario tener
instalado sudo - que nuestro usuario tenga +ermisos de administrador
Arch 2ser 5e+osi tor - CA25D
SegE# 4o.e,os (eer e# wi5i
12
8
&'() *'rch (ser )epository+ es el lugar donde la comunidad
de 'rch Linu, puede subir los -./011L2 de las aplicaciones%
bibliotecas% etc!% y compartirlos con el resto de la comunidad!
Los dems usuarios pueden votar para ue sus favoritos
entren en el repositorio 3community4% de modo ue puedan
ser instalados en 'rch Linu, en formato binario!5
-# este re4ositorio #os 7a,os a e#co#trar !# tarball co# e( PTGJU/& y .e,s arc*i7os
#ecesarios 4ara crear !# 4a%!ete. -( ,eca#is,o .e i#sta(aci"# es se#ci((o8 .escargar e(
tarball, .esco,4ri,ir, crear 4a%!ete e i#sta(ar. Por e9e,4(o, 4ara i#sta(ar package-
12 *tt4s811wi5i.arc*(i#!6.org1i#.e6.4*41$rc*_User_=e4ository_(-s4a<o()FU8_.)2.JFU!e_es_$U=.@F
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 0M
query8
R )'et https://a(r.archlin(x.or'/packa'es/pa/packa'e$B(ery/packa'e$B(ery.tar.'%
R tar %xvf packa'e$B(ery.tar.'%
R c& packa'e$B(ery
R makepk' $si
R c& ..
R rm $r packa'e$B(ery
is4o#e,os .e ,E(ti4(es *erra,ie#tas %!e 4er,ite# a!to,ati?ar e( 4roceso .e
i#sta(aci"# .e 4a%!etes .e( $U=. U#a *erra,ie#ta ,!y 4o4!(ar es yaourt, (a c!a(
ta,+i3# 4er,ite i#sta(ar (os 4a%!etes .is4o#i+(es e# (os re4ositorios .es.e e( c".igo
f!e#te (si# #ecesi.a. .e te#er i#sta(a.o $JS).
Para i#sta(ar esta *erra,ie#ta, !#a 7e? i#sta(a.o e( 4a%!ete package-query, e9ec!ta,os8
R )'et https://a(r.archlin(x.or'/packa'es/ya/yao(rt/yao(rt.tar.'%
R tar %xvf yao(rt.tar.'%
R c& yao(rt
R makepk' $si
R c& ..
R rm $r yao(rt
-( tra+a9o co# yaourt es si,i(ar a tra+a9ar co# pacman. )o,e#tar3 (as #!e7as o4cio#es
%!e i#cor4ora8
yao(rt <patrYn> H(sca tanto en los repositorios como en el GTI aB(ellos
paB(etes B(e c(mplan el <patrYn>
yao(rt $Py(a Gct(ali%a los paB(etes3 incl(yen&o los B(e proce&en &el GTI.
yao(rt $Py(a $$&evel Gct(ali%a el sistema completo incl(yen&o los paB(etes
proce&entes &el GTI. Pi tenemos paB(etes +asa&os en cvs3
svn3 'it3 +%r3 se act(ali%arfn a la \ltima versiYn B(e
exista en s(s repositorios.
yao(rt $P+ <packa'e> Compila <packa'e> perteneciente a los repositorios &es&e las
f(entes 0no es necesario tener instala&o GHP2
yao(rt $C Vos m(estra la lista &e archivos 7.pac7 0copias &e se'(ri&a&
&e &etermina&os archivos B(e se crean al act(ali%ar el
sistema2 y nos permite e&itarlos y eliminarlos.
yao(rt $H Ieali%a (na copia &e se'(ri&a& &e la HHJJ &e pacman en la
carpeta ra^% &e n(estro (s(ario.
-# e( arc*i7o .e co#fig!raci"# .e yaourt, -et"-ya#urtr" es co#7e#ie#te ca,+iar (a
car4eta .e arc*i7os te,4ora(es. Por .efecto a4!#ta a -tm$, 4ero -tm$ est ,o#ta.o
co,o tmps (es .ecir, est ,o#ta.o e# ,e,oria =$'). $( .escargar, co,4i(ar, etc. se
oc!4a +asta#te es4acio y 4o.e,os te#er 4ro+(e,as, +ie# .e (e#tit!. .e #!estro
e%!i4o, +ie# 4or%!e se %!e.e si# es4acio y #o se 4!e.a crear e( 4a%!ete.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ?1
Po.e,os crear !#a car4eta, 4or e9e,4(o -%#me-ya#urt, y esta+(ecer 3sta c",o (a
car4eta te,4ora(8
# mk&ir /home/yao(rt
# chmo& gg. /home/yao(rt
# cho)n root:(sers /home/yao(rt
is4o#e,os .e .os ,3to.os 4ara ,o.ificar (a co#fig!raci"#8
1.- -sta+(ecie#.o (a co#fig!raci"# 4ara ca.a !s!ario8
R echo ;Q@JLI="/home/yao(rt" > W/.yao(rtrc
2.- -sta+(ecer e( 7a(or e# -et"-ya#urtr", 4ara %!e sea esa (a car4eta 4or .efecto 4ara
to.os (os !s!arios8
&oca(i?a,os 1#PD$R, e(i,i#a,os (a (F) e# caso .e te#er(a y esta+(ece,os e( 7a(or8
;Q@JLI=/home/yao(rt
/ota fi nal
Gracias a $JS, .is4o#e,os .e !#a *erra,ie#ta %!e
#os 4er,ite 4erso#a(i?ar aE# ,s #!estro siste,a.
Gracias a 3( .is4o#e,os .e $U=, !# gra#
re4ositorio co# ,!(tit!. .e 4a%!etes.
-# ge#era(, (as 7ersio#es +eta o (as 7ersio#es .e
.esarro((o .e !#a +!e#a 4arte .e (os 4a%!etes
oficia(es, 4o.e,os e#co#trar(as a((0.
2a,+i3# 4o.e,os e#co#trar 4a%!etes
co#fig!ra.os .e for,a .isti#ta (4or e9e,4(o, co#
so4orte 4ara konsoleSkit e# (!gar .e lo!ind) y
,!(tit!. .e a4(icacio#es %!e aE# #o *a# s!+i.o a
%community&, .#.o#os (a 4osi+i(i.a. .e 7otar
a%!e((os 4a%!etes %!e #os g!star0a est!7iese#
.is4o#i+(es e# %community&, (o %!e 4er,ite %!e (a
co,!#i.a. te#ga !#a 4artici4aci"# acti7a co# e(
.esarro((o .e (a .istri+!ci"#.
e+e,os te#er e# c!e#ta %!e (os 4a%!etes .e
$U= #o est# so4orta.os oficia(,e#te. $( i#sta(ar
!ti(i?a#.o a(g!#a *erra,ie#ta co,o yaourt,
packer, pacaur, aura... se #os 4er,ite e.itar e(
PTGJU/&. -s co#7e#ie#te re7isar(o, 4ara
co,4ro+ar .e ."#.e se .escarga# (os 4a%!etes o
%!3 4arc*es se a4(ica#.
$!#%!e (os 1rusted -ser ;1-<
CF
se e#carga# .e
co,4ro+ar %!e (os 4a%!etes #o i#c(!ye# c".igo
,a(icioso, est# +ie# for,a.os, etc. 4ara s!+ir !#
4a%!ete a( $U= s"(o .e+e,os registrar#os e# (a
4gi#a y s!+ir e( arc*i7o crea.o co# makepk!
SSsource, co# (o %!e, e# 4ri#ci4io, .e+e,os ser
4reca7i.os.
Enl aces de i nters=
*tt4s811wi5i.arc*(i#!6.org1i#.e6.4*41$rc*_J!i(._Syste,
*tt4s811wi5i.arc*(i#!6.org1i#.e6.4*41P5g+!i(.
*tt4s811wi5i.arc*(i#!6.org1i#.e6.4*41$U=
*tt4s811wi5i.arc*(i#!6.org1i#.e6.4*41'a5e45g
*tt4s811wi5i.arc*(i#!6.org1i#.e6.4*41Iao!rt
*tt4811e#.ge#too-wi5i.co,1wi5i1;ar.ware_)F&$GS
1@ 2*!ste. User (2U)8 So# (os !s!arios .e co#fia#?a, se
e#carga# .e ,a#te#er (os 4a%!etes .e Qco,,!#ityR y .e
s!4er7isar $U=.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ?@
G
E
S
#
I
P
/

!
E
P
5
6
L
E
C
#
6
S
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
?B
NCmo son los E7uipos
M!ilesP ;Parte $<
Es muy Atil saber cmo es un t%pico e7uipo ,!il2 cmo
puedes ormar uno y 7u' necesitas saber antes de
empe(ar con el traba+o0
Escrito por: Ser!io $nante #ontero (/#ge#iero .e Software)
/#ge#iero /#for,tico co# est!.ios .e #aster de Direccin Estrat'!ica
en 1$. /#ge#iero .e software e# 1aller 1echnolo!ies2 acti7ista,
co#tri+!i.or y co#s!(tor .e 4royectos 3LOSS, ,ie,+ro .e 4PESOL y
escritor .e art0c!(os y (i+ros t3c#icos .e 4rogra,aci"#.
Periles)
*tt4811a+o!t.,e1#eosergio
2witter8 5neoser!io
*tt4811a+o!t.,e1#eosergio
2witter8 5neoser!io
# !# t04ico 4royecto gi( #o *ay ro(es .efi#i.os. 2o.os 4!e.e# *acer .e to.o y
.e#tro .e to.o ese caos, co#f!si"# y (a #o e6iste#cia .e !#a estr!ct!ra 9err%!ica,
(os e%!i4os 4ro.!ce# #or,a(,e#te software .e a(ta ca(i.a.. -
-# e( se#ti.o tra.icio#a( e# (os e%!i4os gi(es #o e6iste# (os ro(es .e a#a(ista,
4rogra,a.or, e7a(!a.or, a( ,e#os #o e6iste# e# e( se#ti.o tra.icio#a( y (a ra?"#
f!#.a,e#ta( .e esta caracter0stica se .e+e a %!e (as acti7i.a.es .e a#(isis, .esarro((o,
.ise<o y 4r!e+as so# acti7i.a.es co#ti#!as a tra73s .e to.a (a .!raci"# .e( 4royecto.
-# 4a(a+ras si,4(es %!iere .ecir %!e estas acti7i.a.es #o 4!e.e# estar se4ara.as.
-#to#ces, (os e%!i4os gi(es se caracteri?a# 4or (os ro(es #o ta# .efi#i.os, 4or (as
acti7i.a.es .e .esarro((o co#ti#!o y 4or e( tra+a9o e# e%!i4o %!e 4ro.!ce# sie,4re
7a(or 4ara e( c(ie#te.
Lo que hace funci onar al equi +o
;ay ciertas cosas %!e se .e+e# *acer 4ara %!e !# e%!i4o f!#cio#e, estas so#8
$n/olucrar a los clientes
$ 4esar .e %!e e# a(g!#as ocasio#es 4!e.a a4reciarse co,o i##ecesario o i#c(!so co,o
!#a 4er.i.a .e tie,4o, i#7o(!crar a( c(ie#te es s!,a,e#te i,4orta#te. -s (a ,e9or
for,a .e e#te#.er (as #ecesi.a.es .e e((os y 4o.er ((e7ar !# 4royecto a( 36ito.
)!a#.o e( c(ie#te est i#7o(!cra.o, (a retroa(i,e#taci"# %!e +ri#.a se co#7ierte e# e(
factor c(a7e .e( 36ito .e !# 4royecto, (as .e,os 4er,ite# a9!star (as f!#cio#a(i.a.es a
(a rea(i.a., (os c(ie#tes se co#7ierte# e# 4arte i,4orta#te .e( e%!i4o.
-s 4or esta ra?"# %!e ,eto.o(og0as co,o Scr!, o VP co#sta#te,e#te 4ro,!e7e#
,e.ia#te s!s 4rcticas %!e e( c(ie#te se i#7o(!cre e# e( 4roceso
-rincipio gil6 Los responsables de negocio y los
desarrolladores trabajamos juntos de forma cotidiana
durante todo el proyecto!
Si# e,+argo a 4esar .e %!e esto s!e#a ,!y +ie# y 4arece (o ,s ("gico, res!(ta %!e #o
sie,4re 4o.e,os i#7o(!crar a( c(ie#te y a%!0 es .o#.e e,4ie?a# (os tro4ie?os \%!3
*acer] Si# i,4ortar c!( es e( ,oti7o .e (a fa(ta .e co,4ro,iso, se #ecesita te#er (a
cre.i+i(i.a. 4or 4arte .e( c(ie#te. U#a +!e#a for,a .e *acer(o es to,ar !# 4ro+(e,a y
reso(7er(o e# 4er0o.os %!i#ce#a(es, .e for,a ta( %!e (os c(ie#tes se .ar# c!e#ta y
4restar# ate#ci"# a( tra+a9o %!e ests *acie#.o, .e,ostra#.o %!e rea(,e#te 4!e.es
reso(7er 4ro+(e,as y #o s"(o 4(a#ificar s! reso(!ci"#.
P!e.e# *a+er ,!c*as ra?o#es 4or (as c!a(es !# c(ie#te #o se co,4ro,eta co# e(
4royecto8 .e,asia.o tra+a9o, otros 4royectos o %!i?s #o #ecesita# e( software
!rge#te,e#te, 4!e.e# estar rea(,e#te ,!y oc!4a.osD si# e,+argo .e+es recor.ar %!e
4ara co#str!ir cre.i+i(i.a. y *acer %!e (os c(ie#tes se co,4ro,eta#, #ecesitas ga#arte
s! co#fia#?a y eso, se (ogra c!+rie#.o #ecesi.a.es, so(!cio#a#.o 4ro+(e,as, act!a#.oD
4r!e+a *acer eso y e7e#t!a(,e#te te ga#aras s! co,4ro,iso.
Compartir el ambiente de traba+o
$(go %!e a!,e#ta ,!c*o (a 4ro.!cti7i.a. .e( e%!i4o es tra+a9ar !#o a( (a.o .e( otro.
Se tra+a9a ,e9or, (as co#s!(tas se res!e(7e# r4i.a,e#te, (a i#teracci"# e#tre (os
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ?0
,ie,+ros .e( e%!i4o ,e9ora, (a co#fia#?a e#tre (os ,ie,+ros .e e%!i4o se co#str!ye
r4i.a,e#te.
Pero \%!3 4asa si #o *ay 4osi+i(i.a. .e co,4artir !# ,is,o e#tor#o .e tra+a9o, %!i?s
4or%!e #o se e#c!e#tra e# (a ,is,a ci!.a. o i#c(!so e# .ifere#tes 4a0ses] \Se 4!e.e#
te#er e%!i4os gi(es .istri+!i.os] P!es c(aro %!e s0. Si# e,+argo, (os e%!i4os %!e est#
e# !# ,is,o (!gar sie,4re te#.r# ,ayor 7e#ta9a.
U#a reco,e#.aci"# e# e( caso .e e%!i4os .istri+!i.os es %!e a( i#icio .e( 4royecto,
e6ista !#a se,a#a 4ara %!e (os i#tegra#tes .e( e%!i4o se co#o?ca#, co,4arta# tie,4o
ta( 7e? 9!ga#.o, *aci3#.ose +ro,as, co,ie#.o 9!#tos... eso ay!.ar a esta+(ecer
co#fia#?a e#tre (os ,ie,+rosD 9!#tar(os f0sica,e#te .!ra#te !#a se,a#a ser .e ,!c*a
ay!.a. &!ego .e este tie,4o se .e+e !sar to.a *erra,ie#ta .is4o#i+(e .e
co,!#icaci"#, co,o 7i.eo co#fere#cias .iarias, *erra,ie#tas .e socia( ,e.ia,
,e#sa9er0a, e#tre otrosD .e esta ,a#era e( e%!i4o .istri+!i.o 4!e.e se#tirse co,o !#
e%!i4o %!e co,4arte !# ,is,o es4acio geogrfico.
4uto or!ani(ados
-( e%!i4o gi( .e+e te#er !# o+9eti7o e# co,E#, .e ,a#era ta( %!e co,o e%!i4o se
te#ga !#a ,eta c(ara. Para %!e esto f!#cio#e, e( e%!i4o #ecesita ser a!to orga#i?a.o.
&a a!to orga#i?aci"# trata .e a(e9ar e( ego y tra+a9ar e# co#9!#to 4ara (ograr e( o+9eti7o
co,E#, co# to.as (as *a+i(i.a.es, ta(e#tos y 4asi"# 4ara e#tregar (o ,e9or e# e(
4royecto.
2o.os (os ,ie,+ros .e( e%!i4o 4!e.e# ay!.ar e# .i7ersas tareas. -sto #o sig#ifica %!e
.e+a# ser e64ertos e# to.o si#o, se trata .e reco#ocer c!( es (a ,e9or ,a#era .e ((e7ar
a ca+o e( 4royecto, *acie#.o %!e (os ro(es .e#tro .e (os ,is,os e#ca9e# e# (os 4erfi(es
.e (os ,ie,+ros y #o %!e (os ,ie,+ros e#ca9e# e# e( ro(.
U# e%!i4o es a!to orga#i?a.o si8
)rea e( 4(a#, *ace (as esti,acio#es y to,a e( (i.era?go .e( 4royecto.
Se 4reoc!4a ,e#os e# (os ro(es y cargos y est ,as i#teresa.o e# 4ro.!cir
software %!e f!#cio#a.
2o,a i#iciati7as y #o se sie#ta a es4erar "r.e#es.
-rincipio gil6 Las mejores aruitecturas% reuisitos y dise7os
emergen de euipos auto"organi8ados!
#ultiuncional
U# e%!i4o ,!(tif!#cio#a( es a%!e( %!e 4!e.e ser7ir a( c(ie#te .es.e e( 4ri#ci4io *asta e(
fi#. 2ie#e (as *a+i(i.a.es #ecesarias y (a e64erie#cia 4ara to,ar c!a(%!ier re%!eri,ie#to
y co#7ertir(o e# !#a caracter0stica %!e f!#cio#a e# !# corto tie,4o.
-( secreto est e# te#er e# e( e%!i4o 4erso#as %!e se sie#te# c",o.as *acie#.o
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ??
.i7ersas cosas, #o so(a,e#te e# s!s reas .e co#fort.
&os es4ecia(istas so# #ecesarios e# ocasio#es c!a#.o e( e%!i4o se e#c!e#tra tra+a.o e#
a(gE# 4ro+(e,a es4ec0fico. Si# e,+argo, (a ,ayor0a .e e%!i4os se ,a#tie#e# 9!#tos y
tra+a9a# 9!#tos co,o !#o e# to.a (a .!raci"# .e( 4royecto.
&o resa(ta#te .e (os e%!i4os ,!(tif!#cio#a(es es (a 7e(oci.a. a (a %!e *ace# e( tra+a9o,
ya %!e #o tie#e# i#ter7a(os .e 4a!sa, es4era#.o 4er,isos o #egociacio#es .e otros,
4!e.e# r4i.a,e#te e#tregar 7a(or si# tra+a a(g!#a.
Slidos y coniables
U# +!e# e%!i4o sie,4re co#fia e# (os res!(ta.os %!e 4ro.!ceD sa+e %!e (os c(ie#tes
c!e#ta# co# e((o y 4or (o ta#to, #o e(!.e# (a res4o#sa+i(i.a. %!e co#((e7a e( e#tregar
a(go .e 7a(or .0a a .0a.
-sta co#fia#?a se (ogra c!a#.o e( e%!i4o es s"(i.o, to,a s!s 4ro4ias .ecisio#es, *ace (o
%!e cree %!e es correcto 4ara e( c(ie#te, res!e(7e s!s 4ro4ios 4ro+(e,as y #o es4era e(
4er,iso .e #a.ie 4ara *acer s! tra+a9o. Sie,4re *a+r ocasio#a(,e#te errores, 4ero
7a(e (a 4e#a to,ar e( riesgo.
&a co#fia#?a se 7a afia#?a#.o c!a#.o e( e%!i4o e,4ie?a a te#er co#tacto co# (as
4erso#as %!e co#f0a# e# e((os, %!e 7ie#e# co# 4ro+(e,as rea(es, %!e #ecesita# software
4ara ,e9orar s!s 7i.as. -( *ec*o .e te#er .e,os co#sta#tes 4o#e a( e%!i4o e# e(
co,4ro,iso .e ,e9orar e#tre 4rese#taci"# y 4rese#taci"#.
Pri#ci4io gi(8 &os 4royectos se .esarro((a# e# tor#o a i#.i7i.!os ,oti7a.os. ;ay %!e
.ar(es e( e#tor#o y e( a4oyo %!e #ecesita# y co#fiar(es (a e9ec!ci"# .e( tra+a9o.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ?9
G
E
S
#
I
P
/

!
E

P
5
6
L
E
C
#
6
S
(ac)ers & !e*elo+ers Maga"ine > ATo 13 /Omero 9
?E
1en!o 7ue desarrollar
un nue/o Sot@are
Npor dnde empie(oP
Sin lu!ar a dudas2 'ste es el problema m,s recuente
al 7ue nos enrentamos los pro!ramadores) Npor
dnde comen(ar a desarrollar una aplicacinP 1e
enlo7ueces buscando conse+os2 tratando de ele!ir la
metodolo!%a apropiada pero al!una /e( Nte
pre!untaste cu,l es el m'todo 7ue me+or se a+usta a
tus ras!os de personalidadP Este art%culo abarca
tanto aspectos t'cnicos y conceptuales como ras!os
psicol!icos relati/os a cada indi/iduo2 7ue pueden
ayudarte a tomar la decisin 7ue me+or se a+uste a tu
peril0
Escrito por: Eu!enia "ahit ($r%!itecta G&$'P & $gi(e )oac*)
-!ge#ia es 4r7uitecta de Sot@are, docente i#str!ctora .e tec#o(og0as
8L4#P (GNU1&i#!6, $4ac*e, 'ySU&, Pyt*o# y P;P) y 4!ile coach (U2N)
es4ecia(i?a.a e# Scr!, y eVtre,e Progra,,i#g. 'ie,+ro .e (a 3ree
Sot@are 3oundation e i#tegra#te .e( e%!i4o .e Debian Hackers.
:ebs)
)!rsos .e 4rogra,aci"# a ista#cia8 www.c!rsos.e4rogra,acio#a.ista#cia.co,
Se+ 4erso#a(8 www.e!ge#ia+a*it.co,
Redes sociales)
2witter 1 /.e#ti.ca8 5eu!eniabahit
a.a 7e? %!e te#e,os %!e co,e#?ar !# #!e7o 4royecto .e .esarro((o .e
Software, .os se#ti,ie#tos e#co#tra.os se #os 4rese#ta#8 e( e#t!sias,o 4or
e,4e?ar !# 4royecto #!e7o y (a se#saci"# .e te#er ,i(es .e i.eas 4ero si#
e,+argo, #i !#a %!e #os i#.i%!e c",o i#iciar e( ca,i#o.
)
So# se#sacio#es ,!c*o ,s co,!#es .e (o %!e se cree y se 4rese#ta# *asta e# (os
.esarro((a.ores ,s e64eri,e#ta.os. -( te,a es \c",o a+or.ar e( 4ro+(e,a] Si aE#
co#ti#Eas e64eri,e#ta#.o estas se#sacio#es es *ora .e %!e co,ie#ces a 4restarte ,s
ate#ci"# a ti ,is,o y te 4(a#tees %!3 ca,i#o se a.a4ta ,e9or a t! 4erso#a(i.a. 4ara
as0, (ograr a(ca#?ar e( 36ito %!e ta#to .eseas y ,!c*as 7eces te .e9a co# esa se#saci"#
.e #o *a+er(o a(ca#?a.o.
Si ests 4or co,e#?ar !# #!e7o 4royecto, 4resta ate#ci"# a (as sig!ie#tes 4gi#as y
es4era ((egar a( fi#a( .e( art0c!(o 4ara aseg!rarte to,ar (a .ecisi"# ,s acerta.a.
@& !escri ,e l a *i si %n gl o,al de l a a+l i caci %n
&o 4ri,ero %!e !#o .e+e te#er ,!y e# c(aro es Tde 7u' se trata la aplicacin 7ue se
necesita desarrollarU. 2e#er(o e# c(aro, #o sig#ifica .escri+ir co# 4recisi"# -si%!iera
a4ro6i,a.a- (as caracter0sticas .e (a a4(icaci"# #i ,!c*o ,e#os, s!s f!#cio#a(i.a.es.
Por e( co#trario, i,4(ica te#er !#a 7isi"# g(o+a( .e (o %!e se #ecesita.
Pero N7u' si!niica entonces2 tener una /isin !lobal de la aplicacinP P!e.es
i,agi#ar esa X7isi"# g(o+a(Y co,o !#a +re7e .escri4ci"# %!e te ay!.ar a X7e#.erY t!
a4(icaci"#. $(g!#a 7e? *a+rs 7isto !# 4rogra,a .e te(e7isi"#, .o#.e e( co#.!ctor o
co#.!ctora .e 2B te i#7ita a 4ro+ar .eter,i#a.o 4ro.!cto. -s sa+i.o %!e e( tie,4o e#
te(e7isi"# Xes tira#oY as0 %!e e( co#.!ctor, X(eeY !# r4i.o a#!#cio. -se r4i.o a#!#cio, a
7eces es so(o X!# ga#c*oY 4ara ge#erarte c!riosi.a.. Pero (a ,ayor0a .e (as 7eces, te
.e9a ,!y e# c(aro .e %!3 se trata e( 4ro.!cto. I eso ,is,o, es (a 7isi"# g(o+a( %!e t!
.e+es te#er co# res4ecto a (a a4(icaci"#.
&a 7isi"# g(o+a(, e#to#ces, .e+e ser !#a +re7e .escri4ci"# %!e e# (o 4osi+(e, #o s!4ere
!# 4rrafo y a (o s!,o, se co#c(!ya e# .os. /#c(!so, ,s i.ea( es aE#, 4o.er .escri+ir (a
a4(icaci"# e# !#a E#ica frase.
U#a for,a si,4(e .e i#te#tar o+te#er !#a 7isi"# g(o+a( .e (a a4(icaci"#, ser0a i,agi#ar
e( a#!#cio %!e *ar0as 4ara ofrecer(a. 2e .oy a(g!#os e9e,4(os8
1. )o# $44Na,e 4o.r ((e7ar !# co#tro( 4reciso e# tie,4o rea(, .e (os 4ro.!ctos
.is4o#i+(es e# s! stoc5 y o+te#er a(ertas i#,e.iatas c!a#.o e( i#7e#tario .e
e6iste#cias sea +a9o.
2. /#gresa a $44Na,e.co, y e#c!e#tra e( c!rso %!e ests +!sca#.o. oce#tes
es4ecia(i?a.os e# .i7ersas reas, te es4era# 4ara %!e asistas a s!s c(ases e# (0#ea.
@. -#c!e#tra a,igos o citas e# SiteNa,e.co,. '!c*as 4erso#as es4era# co#ocerte.
i#os c",o es (a 4erso#a %!e .eseas e#co#trar y te 4rese#tare,os a %!ie#es se
a9!ste# a t! 4erfi(.
ifere#tes 4(atafor,as, .ifere#tes o+9eti7os, .ifere#te 4E+(ico. Si# e,+argo, #o c!esta
tra+a9o i,agi#arse .e %!3 se trata ca.a !#a .e (as a4(icacio#es.
U#a 7e? tie#es Xt! a#!#cioY, co#7ertir(o e# !#a .escri4ci"# ,e#os 4erso#a(, #o es .if0ci(.
So(o se trata .e re.actar(o .e ,a#era i,4erso#a(i?a.a y trata#.o .e re.!cir a( ,6i,o
4osi+(e, (os a.9eti7os %!e ge#era# i#.irecta,e#te, !#a o4i#i"# 4re7ia .e( 4ro.!cto8
1. Siste,a .e co#tro( .e stock e# tie,4o rea( y a(ertas i#,e.iatas .e i#7e#tario.
2. P(atafor,a online .e +Es%!e.a y co#trataci"# .e c!rsos a .ista#cia so+re
.i7ersas reas .e co#oci,ie#to.
@. P(atafor,a .e citas online co# siste,a i#te(ige#te .e co#traste .e 4erfi(es y
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ?V
e6a,e# .e co,4ati+i(i.a.es.
$ 4artir .e t! 7isi"# g(o+a(, te ser ,!c*o ,s si,4(e e#te#.er %!3 es a%!e((o %!e
#ecesitas 4ara a(ca#?ar t!s o+9eti7os.
B& !escri ,e l as +arti cul ari dades de tu a+l i caci %n3 sol o
cuando te si entas seguro de +oder hacerl o
-s ,!y i,4orta#te 4o.er e#trar e# c!estio#es ,s 4artic!(ares so+re (a a4(icaci"#,
a#tes .e .eci.ir c",o 7as a .esarro((ar(a y %!3 tec#o(og0as i,4(e,e#tars.
Pero 4ara e#trar e# c!estio#es 4artic!(ares, .e+es e7itar (os .eta((es y so(o
co#ce#trarte e# a%!e((as cosas %!e (a a4(icaci"# 4o.r *acer, es .ecir, e# (a .escri4ci"#
ge#era( .e s!s f!#cio#a(i.a.es.
efi#ir (as ge#era(i.a.es .e (as f!#cio#es .e !# siste,a, #o es 4oca cosa. -s a%!0 .o#.e
(os 4ro+(e,as .e orga#i?aci"# y a#(isis .e re%!eri,ie#tos co,ie#?a# a sa(ir a (a (!?.
-6iste# .os ,3to.os 4ro+a.os %!e 4!e.es e,4(ear 4ara esto, 4ero #i#g!#o .e e((os te
aseg!ra res!(ta.os "4ti,os. Por e((o, antes de decidir 7u' m'todo deseas emplear2 es
muy importante 7ue te tomes el tiempo de Tdeinirte a ti mismoU, ya %!e e( res!(ta.o
.e ca.a ,3to.o, depender, de tus ortale(as y debilidades.
9unca olvides ue conociendo tus debilidades% te abres
camino para poder trabajarlas y convertirlas en fortale8as
&os ,3to.os %!e 4!e.es e,4(ear, so#8
1. #'todo tradicional ) co#siste e# *acer !#a (ista .e f!#cio#a(i.a.es co#oci.as .e
(a a4(icaci"#. Por e9e,4(o8
$J' .e 4ro.!ctos y categor0as
Ge#eraci"# a!to,tica .e re4ortes .e 'tock
Ge#eraci"# a!to,tica .e a(ertas c!a#.o e( stock ((eg!e a ( 4ro.!ctos
-ste ,3to.o es e( ,s co,E#, 4ero si# e,+argo, te e#fre#ta a ciertos .esaf0os
.if0ci(es .e reso(7er a (a *ora .e 4asar a (os .eta((es. -ste ,3to.o, puede ser
contraproducente en los si!uientes casos)
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ?W
-res !#a 4erso#a %!e se .istrae co# faci(i.a.D
Ge#era(,e#te, te c!esta orga#i?arteD
S!e(es co#ce#trarte ,!c*o e# (os .eta((es y co# frec!e#cia, 4ier.es e(
o+9eti7o origi#a( .e 7istaD
2e s!e(es Xe#re.arY a ,e#!.o c!a#.o i#te#tas 4(a#ificar (o %!e .e+es
*acer 4ara c!,4(ir !# o+9eti7o.
Por e( co#trario, e( ,is,o ,3to.o puede ser producti/o cuando)
2e res!(ta e6tre,a.a,e#te i,4osi+(e (o .irecta,e#te i,4osi+(e) co#7i7ir
co# i#certi.!,+res (#o sa+er o .esco#ocer (o %!e s!ce.er)D
$ ,e#!.o, sie#tes (a #ecesi.a. .e ,a#te#er e( co#tro( so+re sit!acio#es
y1o 4erso#as %!e te ro.ea#D
)o# frec!e#cia, 4!e.es a#tici4arte a (as co#sec!e#cias res!(ta#tes .e t!s
.ecisio#esD
Fre#te a .ifere#tes circ!#sta#cias s!e(es e64eri,e#tar !#a es4ecie .e
+(o%!eo fre#te a (o .esco#oci.oD
Ge#era(,e#te, tie#es (a se#saci"# .e #o sa+er si eres o #o ca4a? .e (ograr
a%!e((o %!e te 4ro4o#es.
2. #'todo ,!il ) co#siste e# .efi#ir (as accio#es %!e *ar e( siste,a, .es.e (a "4tica
.e %!i3#es (o !ti(i?ar#. Para e((o, se !ti(i?a !# for,ato .escri4ti7o ((a,a.o
X;istoria .e Us!arioY. U#a *istoria .e !s!ario se ar,a co# (a frase8 como %mi rol de
usuario& puedo %acci)n&. C4cio#a(,e#te, 4!e.e co,4(etarse co#8 para %beneficio&.
Por e9e,4(o8
)o,o a.,i#istra.or .e( siste,a 4!e.o agregar categor0as
)o,o a.,i#istra.or .e( siste,a 4!e.o e.itar categor0as
)o,o a.,i#istra.or .e( siste,a 4!e.o e(i,i#ar categor0as 4ree6iste#tes
)o,o res4o#sa+(e .e .e4"sito 4!e.o i#gresar !# 4ro.!cto a( i#7e#tario
)o,o res4o#sa+(e .e .e4"sito 4!e.o o+te#er !# re4orte .e( stoc5 .e (os
4ro.!ctos e6iste#tes e# e( .e4"sito
)o,o 7e#.e.or 4!e.o co#s!(tar e( stock .e !# .eter,i#a.o 4ro.!cto
-ste ,3to.o, es ,!c*o ,e#os !ti(i?a.o %!e e( tra.icio#a(. Si# e,+argo,
esta.0stica,e#te *a .e,ostra.o arro9ar ,e9ores res!(ta.os e# e( software fi#a(
ge#era.o. No o+sta#te, puede presentarse como un obst,culo2 cuando)
$ ,e#!.o y e# .ifere#tes sit!acio#es e64eri,e#tas se#sacio#es .e
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& ?M
a#sie.a. si# orige# a4are#teD
S!e(es e64eri,e#tar co# ,!c*a frec!e#cia !#a se#saci"# .e +(o%!eo,
esta#ca,ie#to, a7a#ce (e#to o crisis .e a#sie.a. fre#te a circ!#sta#cias #o
4re7istasD
$ .ifere#cia .e( a#terior ,3to.o, este otro 4!e.e res!(tar sumamente
producti/o !#a 7e? se s!4era (o se a4re#.e a ,a#e9ar) e( ,ie.o a (o
.esco#oci.o, si# ,ayores ,ayores re%!isitos. No o+sta#te, ciertas caracter0sticas
a te#er e# c!e#ta a( ,o,e#to .e e(egir esta o4ci"#, so#8
-res !#a 4erso#a seg!ra .e s0 ,is,a y co# frec!e#cia sie#tes %!e 4!e.es
a(ca#?ar (os o+9eti7os %!e te 4ro4o#esD
2e estresas co# faci(i.a. fre#te a (as gra#.es ((!7ias .e i.eas o gra#.es
ca#ti.a.es .e i#for,aci"# y te sie#tes ,!c*o ,s c",o.o y .iste#.i.o,
*acie#.o (as cosas X4aso a 4asoYD
2ie#es faci(i.a. 4ara ,a#e9ar (as se#sacio#es %!e te ge#era# (os ca,+ios
.e 4(a#es o te a.a4tas co# faci(i.a. a (os ca,+ios si# %!e e((o i,4(i%!e #o
4o.er co#ti#!ar co# t! 7i.a .iaria .e for,a #at!ra(.
Elegir auel m:todo ue mejor se adapte a tu personalidad%
evitando ser tu uien deba adaptarse al m:todo% ser la
principal fuente de garanta sobre los resultados ue
finalmente obtengas!
0& Pri ori "a - *al ora l as funci onal i dades del si stema
-# 4ri#ci4io, .e+es te#er e# c!e#ta %!e *ayas o4ta.o 4or !# ,3to.o tra.icio#a( o !#o
gi(, (as f!#cio#a(i.a.es .e( siste,a 4!e.e# ir ca,+ia#.o y1o a,4(i#.ose co#
frec!e#cia. No o+sta#te, s!e(e# te#erse ,ayor ca#ti.a. .e f!#cio#a(i.a.es .escritas
c!a#.o se tra+a9a .e for,a tra.icio#a( %!e .e for,a gi(. Si# e,+argo, !# +!e# #E,ero
.e f!#cio#a(i.a.es .escritas 4ara 4o.er co,e#?ar co# e( .esarro((o, s!e(e ser i#ferior o
ig!a( a 10. Si 4!e.es Xfre#arY !# 4oco e# ese 4!#to, te ser ,!c*o ,s fci( a7a#?ar e#
e( .esarro((o. -s e# este 4!#to .o#.e 4!e.es co,e#?ar a 4riori?ar y 7a(orar (as
f!#cio#a(i.a.es.
Prioridad
&a 4riori.a. .e !#a f!#cio#a(i.a., es !#a c!esti"# .e .e4e#.e#cia ("gica. &a ,e9or
estrategia 4ara .ar(e 4riori.a. a !#a f!#cio#a(i.a. so+re otra, es 4reg!#tarse \4!e.o
co#tar co# (a f!#cio#a(i.a. XVY si# .e4e#.er .e (a f!#cio#a(i.a. XIY] )!a#.o #o sa+es
%!3 res4o#.er a esa 4reg!#ta, 4!e.es ((egar !# 4oco ,s a fo#.o 4reg!#t#.ote8
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 91
\.e4e#.e XVY .e a(g!#a otra f!#cio#a(i.a.]
)!a#.o XVY .e4e#.a .e XIY, XIY te#.r 4riori.a. so+re XVY.
)!a#.o XIY .e4e#.a .e XVY, XVY te#.r 4riori.a. so+re XIY.
)!a#.o XVY #o .e4e#.a .e XIY e XIY #o .e4e#.a .e XVY, 4o.r te#er ,ayor
4riori.a., a%!e((a %!e ,ayor 7a(or te#ga 4ara (a a4(icaci"#.
Valor
-( 7a(or %!e !#a f!#cio#a(i.a. te#ga 4ara (a a4(icaci"#, a .ifere#cia .e (a 4riori.a., #o
es !#a c!esti"# .e .e4e#.e#cia, si#o .e re(e7a#cia 4ara e( #egocio. *+u, funcionalidad
generar-a m.s ,xito a mi aplicaci)n/ Se 4!e.e .ecir %!e e( 7a(or %!e !#o (e otorg!e a !#a
f!#cio#a(i.a., ser re(ati7o a (as co#sec!e#cias %!e .ic*a f!#cio#a(i.a. ge#erar 4ara e(
#egocio. Por e9e,4(o, e# !# siste,a .e co#tro( .e i#7e#tario, se cree %!e ge#erar !#
,ayor 36ito a (a a4(icaci"# (a 4osi+i(i.a. .e ge#erar re4ortes .e stock %!e (a .e
a.,i#istrar categor0as .e 4ro.!ctos.
Prioridad y /alor) Ncmo otor!arlosP
$( ,o,e#to .e .ar 4riori.a. y 7a(or a !# 4e%!e<o #E,ero .e f!#cio#a(i.a.es, .e+ers
te#er e# c!e#ta (o sig!ie#te8
&a 4riori.a. es E#ica 4ara ca.a f!#cio#a(i.a. y se a4(ica .e for,a i#cre,e#ta(. $
,e#or #E,ero, ,ayor 4riori.a.. -s .ecir %!e (a f!#cio#a(i.a. co# 4riori.a. 1
ser 4rioritaria fre#te a (a .e 4riori.a. 2.
&a 7a(oraci"# se ,i.e e# +ase a !#a esca(a si,+"(ica %!e 4!e.e ir .e 1 a 100 e#
i#cre,e#tos .e 10 o G. $ ,ayor #E,ero, ,ayor ser (a re(e7a#cia .e esa
f!#cio#a(i.a. 4ara e( siste,a. P!e.e# coe6istir ,E(ti4(es f!#cio#a(i.a.es co# (a
,is,a re(e7a#cia.
?& !etal l a l a funci onal i dad con ma-or +ri ori dad
U#a 7e? *ayas 4riori?a.o y 7a(ora.o a( ,e#os !# tota( .e e#tre G y 10 f!#cio#a(i.a.es,
4!e.es to,ar a%!e((a a (a c!( (e *ayas asig#a.o (a ,ayor 4riori.a. y co,e#?ar a .efi#ir
s!s criterios de aceptacin.
&os criterios .e ace4taci"# .e !#a f!#cio#a(i.a., a+arca# *asta e( ,s ,0#i,o .eta((e
so+re 3sta. &os ,is,os, 7a# .es.e a%!e((o %!e 7er e( !s!ario a( i#gresar a .ic*a
f!#cio#a(i.a. *asta (os 4asos %!e .e+er seg!ir 4ara co#cretar e( 4roceso y (a for,a e#
(a %!e e( siste,a .e+er res4o#.er y reaccio#ar fre#te a .ic*as accio#es .e( !s!ario.
Por e9e,4(o8
2o,e,os e( caso .e (a f!#cio#a(i.a. %!e tra.icio#a(,e#te (a *e,os .efi#i.o co,o
Generacin automtica de reportes de Stock y gi(,e#te .i9i,os %!e Como
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 9@
responsable de depsito puedo obtener un reporte del stock de productos.
&os criterios .e ace4taci"# 4ara esta f!#cio#a(i.a. 4o.r0a# .escri+irse .eta((a.a,e#te
co,o (os sig!ie#tes8
6es!e la $antalla $rn"$al !el sstema( el usuar# !e.erA $ulsar un .#tBn "#n la
leyen!a C1enerar re$#rte !e :t#"kD.
El sstema !e.erA m#strar en la sguente $antalla( una lsta "#n l#s n#m.res !e
l#s $r#!u"t#s( el "B!g# !e .arras( el se"t#r !el !e$Bst# en el "ual se u."a
"a!a $r#!u"t# &letra y n=mer# !e se"t#r' y la "ant!a! !e e7sten"as.
Cuan!# la e7sten"a sea n9er#r # gual a 50( se !e.erA m#strar el st#"k
en r#j#.
Cuan!# la e7sten"a sea men#r a E5( se !e.erA m#strar un .#tBn a la
!ere"%a !el st#"k( "#n la leyen!a CAlertar al res$#nsa.le !e !e$Bst#D.
Al $ulsar !"%# .#tBn( se en*arA un e-mal a la "uenta !el
res$#nsa.le !e !e$Bst# &res$#nsa.le@e7am$le.#rg'( "#n asunt#
CE7sten"a nsu9"ente !el $r#!u"t# F"B!g# !e .arras !el
$r#!u"t#G &st#"k: Fst#"kG'D.
El e-mal n# $#!rA en*arse "#n una 9re"uen"a n9er#r a EH %#ras.
Cuan!# !"%a e7sten"a nsu9"ente %aya s!# re$#rta!a( el
sstema !e.erA )ue!ar al $en!ente y trans"urr!as IE %#ras !es!e
el en*J# !e la $rmera alerta( !e.erA "#nstatar s se %an re$uest#
e7sten"as. 6e n# %a.erse re$uest#( !e.erA en*ar el msm# e-mal
!e 9#rma aut#mAt"a( al res$#nsa.le !e !e$Bst# y al 1erente !e
/r#!u""Bn &gerente@e7am$le.#rg'.
9& !efi ne l as tareas necesari as +ara que cada funci onal i dad
sea desarrol l ada
)!a#.o (os criterios .e ace4taci"# .e a( ,e#os 1 f!#cio#a(i.a. se e#c!e#tre# .efi#i.os
y G o 10 f!#cio#a(i.a.es *aya# si.o .escritas, estars e# co#.icio#es .e e7a(!ar %!3
tec#o(og0as y1o *erra,ie#tas ser# co#7e#ie#tes 4ara e( .esarro((o .e (a a4(icaci"#.
Para e((o .e+ers Xco(ocar e# (a +a(a#?aY8
&a 7isi"# g(o+a( .e (a a4(icaci"#D
-( co#9!#to .e f!#cio#a(i.a.es ya .escritasD
&a +ase .e refere#cia .e (os criterios .e ace4taci"# es4ecifica.osD
&os rec!rsos .e (os c!(es .is4o#esD
2! #i7e( .e co#oci,ie#tosD
-( tie,4o %!e 4!e.es i#7ertir e# i#7estigar a#tes .e to,ar (a .ecisi"#
tec#o("gica a4ro4ia.aD y...
Factores a9e#os a t! res4o#sa+i(i.a. o a(ca#ce, %!e i,4acte# .e for,a .irecta
so+re (a a4(icaci"#.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 9B
;acie#.o !# +a(a#ce .e (os 7 4!#tos a#teriores, 4o.rs to,ar (a .ecisi"# tec#o("gica
,s a4ro4ia.a y c!a#.o (o *agas, estars e# co#.icio#es .e co,e#?ar a .efi#ir (as
tareas 4ara i#iciar e( 4royecto y (as re%!eri.as 4or ca.a !#a .e (as f!#cio#a(i.a.es.
&as tareas iniciales del proyecto, s!e(e# +asarse e# to.o a%!e((o %!e .e+es *acer 4ara
4re4arar t! e#tor#o .e .esarro((o y 4osi+(e,e#te, e( #Ec(eo o ,otor +a9o e( c!(
f!#cio#ar (a a4(icaci"#. -stas tareas, s!e(e# *acerse a( i#icio .e( 4royecto y (!ego, e#
e7e#t!a(es ocasio#es, re%!erir# a(gE# ti4o .e a.a4taci"# 4ero co# 4oca frec!e#cia.
&as tareas espec%icas a cada uncionalidad so# ta( 7e?, (as %!e ,ayor Xr!i.oY ge#era#
a( ,o,e#to .e 4(a#tearse X\%!3 .e+o *acer 4ara (ograr .esarro((ar esta
f!#cio#a(i.a.]Y.
Jsica,e#te, .e+ers escri+ir !#a (ista (ta( c!( 7aya# a4arecie#.o (as i.eas), .e ca.a
!#a .e (as cosas %!e #ecesitas *acer 4ara %!e .ic*a f!#cio#a(i.a. 4!e.a ser
.esarro((a.a. -stas tareas 4!e.e# ser .e .ise<o grfico, ,a%!etaci"#, 4rogra,aci"#,
ar%!itect!ra, J$, testing, U$ *asta i#c(!so, tareas a.,i#istrati7as.
;acer !#a (ista i#.e4e#.ie#te .e (as tareas #ecesarias 4ara .esarro((ar ca.a !#a .e (as
f!#cio#a(i.a.es .e (a a4(icaci"#, te 4er,itir8
Discriminar y a!rupar tareas por tipo de tarea) 4or e9e,4(o, (as .e .ise<o
grfico, (as .e 4rogra,aci"#, (as .e i#7estigaci"#, (as .e .oc!,e#taci"#, etc.D
Or!ani(ar el orden en el 7ue /as a lle/arlas a cabo) .e (a (ista .e tareas y a
si,4(e 7ista, 4o.rs 7er a%!e((as %!e #ecesites e,4re#.er a#tes %!e otras. No
ser .if0ci( #otar(o8 +astar co# %!e te 4reg!#tes *puedo hacer la tarea 0 antes
que la tarea 1/ Si !#a tarea #o .e4e#.e .e otra, (a 4!e.es .esarro((ar e# e(
,o,e#to %!e .esees. G!0ate 4or e( ,3to.o %!e !ti(i?aste a( ,o,e#to .e
4riori?ar f!#cio#a(i.a.es y a4(0ca(o a (as tareas.
HC%mo segui rJ
$( traba+ar de manera tradicional, (os 4asos 2, @, A y G s!e(e# rea(i?arse de orma
consecuti/a hasta alcan(ar la Altima uncionalidad y e( E(ti,o .eta((e re%!eri.o 4or
3sta. &os ,is,os, so# 4(as,a.os e# !# .oc!,e#to .e#o,i#a.o Xoc!,e#to .e
$(ca#ceY y #o se co,ie#?a co# e( .ise<o y .esarro((o .e (a a4(icaci"#, *asta %!e .ic*o
.oc!,e#to se e#c!e#tra fi#a(i?a.o y a4ro+a.o 4or (os 4ri#ci4a(es i#teresa.os e# e(
4royecto.
)!a#.o se traba+a de orma ,!il, e( 4aso 2 se rea(i?a e# for,a 4ara(e(a a (os sig!ie#tes
e i#c(!so, ,ie#tras %!e se est .esarro((a#.o (a a4(icaci"#, a( ig!a( %!e s!ce.e co# e(
4aso @. &os 4asos A y G, se rea(i?a# c0c(ica,e#te. $( co,ie#?o .e( 4royecto, se esta+(ece
(a .!raci"# .e !# cic(o .e .esarro((o (4or e9e,4(o, ca.a 2 se,a#as se .eci.e c!,4(ir !#
cic(o). e4e#.ie#.o .e este tie,4o, se e(ige# !#a, .os (o ,s) *istorias .e !s!ario, se
efectEa# (os 4asos A y G a( co,ie#?o .e( cic(o, se .ise<a# y .esarro((a# (as *istorias .e
!s!ario y (!ego, se re4ite e( cic(o .es.e e( 4aso A.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 90
S
6
4
#
;
A
5
E

L
I
B
5
E
3ireo.OS 4pp Days
"arcelona
El pasado 6V de enero de 6DCF se celebraron los
3ireo.OS 4pp Days alrededor de di/ersas ciudades
del mundo0 Hackers G De/elopers #a!a(ine ue
in/itada para cubrir el e/ento y Laura #ora2 estu/o en
"arcelona0 En este art%culo2 nos cuenta cmo ue este
si!niicati/o d%a y nos re!ala una entre/ista con 4lina
#ierlus2 una de las or!ani(adoras0
Escrito por: Laura #ora ($.,i#istra.ora .e =e.es y Siste,as GNU1&i#!6)
Laura es a.,i#istra.ora .e Redes y Sistemas 89-JLinu. e# )ata(!<a.
2ie#e !#a (arga trayectoria e# (a co#s!(tor0a .e so(!cio#es te(e,ticas
open source 4ara ,o7i,ie#tos socia(es. &a +ase .e s!s 4royectos es e(
empoderamiento tecnol!ico .e (as 4erso#as.
:ebs)
J(og8 *tt4811+(ac5*o(..#!se4as.co,1
Se+8 *tt4811.e(a#it.#et
Redes sociales)
2witter 1 /.e#ti.ca8 5"lackholdI
( 4asa.o 2H .e -#ero se ce(e+r" e# e( es4acio 'CJ ('a5ers of Jarce(o#a) e# (a
ca((e Jai(3# .e Jarce(o#a, e( Firefo6 $PP ays, !# e7e#to .e 'o?i((a 4ara
4rese#tar e( #!e7o siste,a o4erati7o 4ara .is4ositi7os ,"7i(es, Firefo6CS. -ste
e7e#to se ((e7" a ca+o e# (a ,is,a fec*a e# otras ci!.a.es .e( ,!#.o, #o so(o 4ara .ar
a co#ocer este #!e7o 4royecto, si#o ta,+i3#, 4ara %!e (os 4rogra,a.ores se a#i,e# a
s!,arse e# e( .esarro((o .e a4(icacio#es 4ara esta 4(atafor,a.
-
-( e#c!e#tro t!7o !# for,ato 4artici4ati7o y (E.ico, (o %!e *i?o %!e f!ese !#o .e
a%!e((os .0as c!riosos e i#o(7i.a+(es.
&a 9or#a.a e,4e?" co# !#a r!e.a .e 4rese#tacio#es .e (os .isti#tos asiste#tes, (a gra#
,ayor0a .esarro((a.ores, 4ero e#tre e((os ta,+i3# a.,i#istra.ores .e siste,as,
2ommunity 3anagers y a(g!#os 4erio.istas.
Se sig!i" co# !#a +re7e acti7i.a. e# (a c!a( (os orga#i?a.ores for,!(a+a# !#as
afir,acio#es y (os asiste#tes te#0a,os %!e 4osicio#ar#os e# (a sa(a segE# #!estra
ace4taci"# o rec*a?o. $(g!#as .e e((as *ac0a# refere#cia a a4(icacio#es .e ,e#sa9er0a e#
.is4ositi7os ,"7i(es o si !#a a4(icaci"# 4o.r0a s!stit!ir a #!estro ,3.ico .e ca+ecera.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 9?
's tar.e, 4or gr!4os #os 4!si,os a *acer !# tor,e#ta .e i.eas so+re a4(icacio#es %!e
4o.r0a# ser i#teresa#tes. 2ras 3sta, se ,ostraro# (as i.eas .e (os .isti#tos gr!4os y (os
4artici4a#tes ,arcaro# co# !# 4!#to (as a4(icacio#es %!e (es res!(ta+a# .e ,ayor
i#ter3s.
$( fi#a(i?ar (a ,a<a#a, co# (os ,is,os gr!4os %!e *a+0a,os *ec*o (a tor,e#ta .e i.eas
f!i,os 4asa#.o 4or .isti#tas ,esas .o#.e !# e64erto .e 'o?i((a #os e64(ica+a
co#ce4tos o 4rogra,as #ecesarios 4ara e#te#.er (a we+ y e( .esarro((o .e (as
a4(icacio#es Se+ 4ara Firefo6CS. $(g!#as .e estas c*ar(as (i7ia#as, *iciero# refere#cia a
4esponsive 5eb 6esign, No.e.>s, $P/s client side storage, 4(a#ti((as 4ara (as Firefox7'
5eb 8pps, etc.
Por (a tar.e (os asiste#tes se 4!siero# a co#ocer .isti#tas 4artes .e( siste,a o4erati7o,
.es.e e( .esarro((o .e a4(icacio#es, f!#cio#a(i.a.es .e( siste,a, i#sta(aci"# e#
.is4ositi7os, etc.
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 99
es.e ;ac5ers & e7e(o4ers 'aga?i#e, t!7i,os (a 4osi+i(i.a. .e e#tre7istar a !#a .e
(as 4ie?as %!e *i?o 4osi+(e esta Firefo6CS $PPs .ays e# Jarce(o#a, $(i#a 'ier(!s y esto,
f!e (o %!e #os .i9o8
'lina #ierlus% ingres en la comunidad del ;pen Source hace
poco ms de < a7os y desde hace =% contribuye a #o8illa
organi8ando y facilitando eventos de la comunidad!
NCmo empe( la idea de !estarse un
sistema operati/o para dispositi/os m/iles
desde la comunidad de #o(illaP
U#a cosa ,!y +o#ita .e#tro .e 'o?i((a es %!e
(a ge#te tie#e (a (i+erta. .e 4e#sar, 4ro4o#er
s!s i.eas y s!s 4royectos. 2o.o e,4e?" e#tre
c!atro .esarro((a.ores .e -sta.os U#i.os e#
!#a (ista .e .esarro((o. P(a#tea+a# e( c",o se
4o.0a ir ,s a(( .e( (0,ite act!a( .e( we+ \%!3
se 4o.r0a *acer] y 4e#saro# 4recisa,e#te e#
esto, e# !# siste,a o4erati7o 4ara ,"7i(es.
U#o .e (os ,oti7os es %!e estos .is4ositi7os
so# (os E#icos Q4araR (os c!a(es #o se *a+0a
.esarro((a.o aE# (a i#tegraci"# co# e( we+, ta(
co,o te#e,os e# e( escritorio.

Boot to Gecko era el nombre inicial de
este sistema operati/o Npor 7u' la
comunidad se decant inicialmente por este
nombreP
Prctica,e#te 4or%!e e( ,otor, e( engine
i#tegra.o e# Firefo6, se ((a,a Gec5o y +oot to
gec5o, sig#ifica 9boot to the web9.
NCmo enoc,is el tema de la pri/acidad de
los datosP
)reo %!e so# .os cosas !# 4oco .isti#tas. Para
e( te,a 4ri7aci.a., 'o?i((a tie#e !#a serie .e
4ro.!ctos, 4or e9e,4(o, 4erso#a. Perso#a es
!# siste,a .e i.e#ti.a. 4ara (a we+, es
4rctica,e#te co,o e( C4e#/ 4ero to.o es
we+. -sto sig#ifica %!e es aE# ,s (i+re,
4or%!3 s"(o #ecesitas co#ectarte a( we+ 4ara
*acer (ogi#.
Perso#a f!#cio#a co,o !# ser7icio. $*ora
,is,o te#e,os !# ,o#t"# .e 4ro+(e,as, 4or
e9e,4(o, te#e,os co#trase<as e# .ie?, 7ei#te,
we+ sites, i,4(e,e#ta#.o 4erso#a, (o %!e
4o.e,os *acer es reso(7er esta 4ro+(e,tica.
Perso#a es !#o .e (os 4ro.!ctos %!e i#te#ta a
ay!.ar a (a ge#te co# (os te,as .e 4ri7aci.a..
es4!3s, *ay 4rogra,as co,o e( webmaker
%!e e#se<a a (a ge#te co,o es e( we+ y c",o
f!#cio#a.
es4!3s e# firefo6CS si ,iris e( te,a .e
settings, est (a o4ci"# 9do not track9 (#o
%!iero ser rastrea.o). -sto .ice a (as webs y
otras a4(icacio#es %!e #o %!iero %!e co9a
.atos si# ,i 4er,iso.
P!es co# 4erso#a, %!e es e( siste,a .e
i.e#ti.a. +asa.o e# e( we+, es !#a $P/
a+ierta %!e c!a(%!ier .esarro((a.or 4!e.e
!sar(a y *acer deployment e# s! a4(icaci"#.
Ny el tema de la intercomunicacin de la
terminal con otros dispositi/osP
Prctica,e#te to.o se *ace .es.e e( we+
NSer%a como subir cosas en el cloudP
-6acto. &a +ase .e Firefo6CS so# (as webapps
y to.a (a co,!#icaci"# se *ace ,e.ia#te e(
we+.
Entonces N7u' compatibilidad tenemos con
aplicaciones de otros abricantesP
-# Firefo6CS s"(o te#e,os a4(icacio#es we+ y
a*ora te#e,os %!e rea(i?ar !# gra# tra+a9o e#
co#7e#cer a (os .esarro((a.ores a crear
a4(icacio#es +asa.as e# e( we+ 4ara %!e sea#
co,4ati+(es co# Firefo6CS. -s !# ,erca.o !#
4oco co,4(e9o (...) y esto #o #os g!sta 4or%!e
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 9E
es !# .o(or .e ca+e?a 4ara e( .esarro((a.or.
-sto .e (a i#terco,!#icaci"# es !#a tarea %!e
.e4e#.e .e #osotros, .e (a co,!#i.a. y .e (a
ge#te %!e .esarro((a a44s.
N&a/a no hay2 noP
-6acto. -st >a7aScri4t, %!e t! 4!e.es *acer
!#a a44 4ara Firefo6CS y ya te f!#cio#a e# e(
#a7ega.or .e GNU1&i#!6 y .e c!a(%!ier otro
siste,a o4erati7o (...) y este es e( reto8 .e %!e
,as y ,as 4erso#as se .e# c!e#ta .e esta
o4ort!#i.a. .e co#str!ir webapps y (i+erar as0
(as a4(icacio#es a ,s y ,s !s!arios.
N7u' aceptacin ha habido por parte de los
abricantes de dispositi/os m/iles de esta
iniciati/aP
;ay ya a(go .e i#for,aci"# so+re esto. &os
4ri,eros ter,i#a(es 4ara .esarro((a.ores
7e#.r# .e :eeksphone y e( 4ri,er ter,i#a(
co# e( %!e se *a# *ec*o 4r!e+as co#
Firefo6CS *a si.o e( `2-, .e !#a e,4resa
c*i#a. $ #i7e( co,ercia( #o te#go ,as
i#for,aci"#.
Ny por parte de las operadorasP Hemos /isto
7ue a7u% en el encuentro ha habido al!unos
desarrolladores de 1elenica0 NOu'
aceptacin ha habidoP por7ue las
operadoras son las 7ue acaban decidiendo
cu,les son los dispositi/os 7ue /enden a sus
usuarios0
-( 4a4e( .e (as o4era.oras es ,!y i,4orta#te.
Si eres !# geek y tie#es co#oci,ie#tos 4!e.es
.escargar e( c".igo .e Git;!+, *acer !# build
y 4o#er(o e# t! te(3fo#o, 4ero c(aro, (a i.ea es
((egar a( ,6i,o #!,ero .e !s!arios 4osi+(e.
e ,o,e#to 2e(ef"#ica *a .a.o !# gra#
so4orte a Firefo6CS, so+reto.o 4ara e,4e?ar
a co#str!ir e( 4ro.!cto .e for,a co#9!#ta.
2a,+i3# *ay otras o4era.oras %!e (o
re.istri+!ir#, ta( co,o e!tsc*e 2e(eco,,
2e(ef"#ica e# S!.a,3rica y e# -s4a<a, etc.
-stas ser# (as e#carga.as .e acercar este
siste,a o4erati7o a (os !s!arios, 4!.ie#.o
,o.ificar ta,+i3# (a 4arte s!4erior, e( Gaia.

N4l!una pre/isin de echas en la 7ue
podamos /er 3ireo.OS en las tiendasP
-# -s4a<a #o *ay #i#g!#a 4re7isi"#, 4ero *ay
4re7isi"# 4ara este ,is,o a<o 4o.er 7er(os
e# Jrasi(.
-# (a 4gi#a we+ .e Firefo6CS, 4o.r3is 7er !#
(ista.o .e o4era.oras y fa+rica#tes %!e (e *a#
.a.o so4orte, 4ero ,s a(( .e %!3, c!a#.o,
%!ie# y c",o, aE# #o se sa+e.
4l ser un sistema libre Ncmo /eis el tema
de la modiicacin por parte de los
operadores y abricantes de este sistema
operati/oP
-sta es !#a 4reg!#ta i#teresa#te, (a 7e,os
%!e se 4(a#tea ,!c*as 7eces .e#tro .e (a
co,!#i.a.. Por e9e,4(o, e# (a co,!#i.a.
)ata(a#a sie,4re *e,os te#i.o Firefo6 e#
)ata(# y esto es 4or%!3 (o *e,os .eci.i.o
as0. )o# Firefo6CS (a cosa ca,+ia !# 4oco,
4or%!e 4ara te#er 36ito es #ecesario Qser
partners .eR (as o4era.oras. -s #or,a(,
4or%!e es co,o ((egas a( ,erca.o.
Perso#a(,e#te soy +asta#te 4ositi7a, 4or%!e
(o 7eo %!e es !#a re(aci"# %!e se ir
for,a#.o .e cara a( f!t!ro. No creo %!e
.e+a,os ser #egati7os.
&as o4era.oras s"(o te#.r# (a ca4a .e arri+a
y 4o.r# a<a.ir cosas, 4ero ya (o ire,os
7ie#.o.
NSe ha probado ireo.OS en openmokoP
N7u' tal la compatibilidadP ;openmoko es
hard@are libre<
Por (o %!e s3, #o. &a E#ica cosa %!e co#o?co
es %!e se *a *ec*o !# port 4ara ras+erri Pi,
este or.e#a.or 4e%!e<o. Pero co#
o4e#,o5o, #o (o *e o0.o aE#. Se 4!e.e *acer,
4or%!e Firefo6CS es !# siste,a (i+re y es
4osi+(e *acer(o.
NW ten'is tambi'n un emulador de
3ireo.OS 7ue lo podemos probar en
nuestro OrdenadorP
Si. 's %!e !# e,!(a.or, es !#a cosa ,s
se#ci((a, !# si,!(a.or8 Firefo6CS Si,!(ator,
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 9V
%!e se 4!e.e i#sta(ar co,o !#a e6te#si"# .e
Firefo6.
NPor7u' 3ireo.OSP Nal!una aportacin para
animar a la !ente a pasarse a 'ste sistema
operati/oP
Io creo %!e es !#a gra# o4ort!#i.a., #o s"(o
4ara (os !s!arios, si#o 4ara to.as a%!e((as
4erso#as %!e e,4ie?a# a .esarro((ar
a4(icacio#es 4ara .is4ositi7os ,"7i(es, 4or%!e
e( e#tor#o .e .esarro((o es ,!y fci(, 4or%!e
es 4rctica,e#te (a tec#o(og0a we+ #ati7a,
;2'&G, >a7aScri4t y )SS. $.e,s a( ser
c".igo a+ierto 4!e.es ,o.ificar(o
4rctica,e#te to.o, 4er,itie#.o a (a ge#te
tra+a9ar a .isti#tos #i7e(es y ,o.ificar (as
a4(icacio#es 4ara s!s #ecesi.a.es. \Por%!3
firefo6CS] 4!es 4or%!e %!ere,os 4ro+ar e(
(0,ite .e( we+.
=El l%mite lo pone la ima!inacin>
a-6acto^ /,ag0#ate %!e e# 4ocos ,eses,
webapps 4!.iese# so(!cio#ar 4ro+(e,as
rea(es .e (a socie.a., 4or e9e,4(o !#a
webapp .esarro((a.a e# co(a+oraci"# co# !#a
asociaci"# .e ,3.icos .e t! 4o+(aci"#...
Wa lo comentabais en la din,mica de esta
maXana Nhasta 7u' punto consider,is 7ue
una aplicacin @eb podr%a reempla(ar
/uestro m'dico de cabeceraP
a-6acto^ so# 4reg!#tas %!e #os te#e,os %!e
*acer a 7eces y 7e#ir co# cosas i##o7a.oras
co,o .esarro((a.ores, 4or%!3 se est#
ca,+ia#.o ,!c*as cosas. -# -!ro4a se
a4!esta ,!c*o 4or (a creaci"# .e i##o7aci"#.
Firefo6CS %!iere a+rir e( ecosiste,a 4ara
to.as estas cosas, a( ,is,o tie,4o %!e .ar (a
o4ort!#i.a. a .esarro((a.ores .e
i#teraccio#ar .irecta,e#te co# e( !s!ario, 4or
e9e,4(o a tra73s .e( marketplace, %!e es !#
o4e#$P/. 2o.o e# Firefo6CS es we+$P/.
N1odas las aplicaciones del marketplace
;@eb4P$<2 podr,s usarla y modiicarlaP
a-6acto^ 2! coges (as cosas y (as 4o#es e# t!
ser7i.or y 4!e.es co#str!ir e# tor#o .e esta
we+$P/. Por e9e,4(o e( marketplace .e
'o?i((a es !# we+$P/ %!e (o 4!e.es coger y
4!e.es *acer t! 4ro4io marketplace y 4o#er
a*0 (a a4(icaci"# %!e t! %!ieras. No *ay estas
restriccio#es, #i ta,4oco (a .e te#go %!e
4agar !#a c!ota ,e#s!a( 4or 4o#er ,i
a4(icaci"# a*0.
Pues muchas !racias y ya con esta
e.plicacin2 si no os pas,is a 3ireo.OS es
por7ue =os lo est,is perdiendo> =#uchas
!racias y hasta la pr.ima>
Gracias^
UB1@0 (!Maga"ine&org > Creati*e Commons Atri,uci%n /oComercial Com+artirIgual 0&1 2n+orted
P$g& 9W

.3
.3. .33
33 344444
[44443. 344444
[44444344444449
[444:344444443
[4443444444444
[:444444449
..333. .:::::::.
.3. s.
[3 3PPPs.
[:.:.:.:.:.:.:. 3PPPPPPs.
.::3 3PPPPPPPPP3
:::43 3PP4PPPPPPsP
3:3:::::::::::443 PP4PPPPPPsPP
3::a111111a::44444443. ... PP4PPPPPPPP9
[::::::11111111111a4444444449 # [PP4PPPPP9
.3sPPPPs443::1111119 #[11a444449 39 [P4PP9
sPPPPPPPPPs4443:1111a .111a44sPPPP9 .444PP3
[PPPPPPPPPPPs4443:111a11144sPPPP9 ..33444PPPPPPs.
[PPPPPPPPPPPPs44344444444444PPPP9 ..334sPPP4PPPPPPPPs.
[PPPPPPPPPPP44sPPPP"""" ..334sPPPPPPPP444PPPPPPPPPP.
"""""" 44PPPPPP4..33sPPP4PPPPP44444444PPPPPPPPP.
[PPPPP44444PPPP4444sPPP4444444PPPPPPPPP
PPP4444444444sPPPP4PPP444444444PPPPPPPPP
[P4444444444444PPPPP44444444444444PPPPPPPPP
PP4444444444444444444444444444PPPPPPPPP9
PP444444444444444444444444444444PPPPPPPPP9
PP44444444444444444444444444444PPPPPPPP9
PP4444444444444sPPs44444444PPPPPPPPPP
[PP44444444444444PP444444PPPPPPPPPP9
[P444444444444444P44444PPPPPPPPP4
[P4444444444449 [4444PPPPPPPPP4.
3P44444444449 [44444P [PPPPs43.
3444444444449 [4444 [PPPs443.
3444444449 .44444 [PPPPs44.
3444449 .4449 3444449 [PPPP44
344449 .44449 3444449 [PPs449
344449 .4449 344449 34449
344449 .444 344449 34449
344449 .4449 344449 34449
344449 4444 34449 34444
44449 .::::: 34449 44449
.::::: :::::9 34449 34444
:::::9 344449 44444
444449 44444
.:::::: .::::::
::::::9 ::::::9
Bambi
por usie O!iatt
Para +u,licar tu mensa.e en la Nona 273 en*anos un eRmail contactoShdmaga"ine&org3
indicando Nona27 En el asunto del mensa.e&
Mensa.es de /uestros
Lectores
Lui s 4el i +e !omi ngue" Qega CCu,aD
Buenas3 ante todo felicitar al equi+o de desarrollo de esta
grandiosa re*ista3 de la cual so- un asiduo lector - seguidor& So-
un estudiantes en Ingeniera en Ciencias Inform$ticas de la
2ni*ersidad de las Ciencias Inform$ticas en Cu,a3 a tra*s de un
sitio creado +or nuestra comunidad Chuman6SD +uedo descargar
las actuali"aciones de su re*ista - +or tanto nutrirme de tan
eGcelentes artculos ela,orados +or tan ,uenos desarrolladores&
Les comento que so- desarrollador en C^^ - so- de los que utili"a
solamente LinuG Ccualquier distri,uci%n3 a cada rato cam,io3
+ero siem+re !e,ian ser$ la casa a donde *uel*a siem+reD& Les
comento que gracias a los +osts de Eugenia Bahit me he
incursionado en el desarrollo de a+licaciones ;e, - so,re todo
en el Patr%n Arquitect%nico MQC utili"ando siem+re
4rontController3 mis +rimeros +asos los di le-endo sus artculos&
Por lo general me encantan los conocimientos que adquiero
le-endola& Sigan as - que la comunidad continOe creciendo3
tienen un fiel seguidor +or aqu&
Eduardo Arcental es A& CEcuadorD
Aca,o de descu,rir su re*ista3 me est$ gustando mucho - es+ero
que +uedan incluir m$s temas so,re agilismo CYD


5e-nal do CMGi coD
Buen da equi+o de (!Maga"ine me llamo 5e-naldo del estado
de Lucat$n3 MGico3 d.enme decirles que les sigo desde que
salio la +rimera re*ista electr%nica - +or cierto esto- encantado
con la informaci%n que ustedes nos ofrecen& CMi dudaD3 se que
conocen mu- am+lio el mundo del soft'are li,re - me gustara
sa,er cual lengua.e de scri+t utili"ar +ara iniciar en desarrollo
'e, ademas de P(P& HCual me sugieren a+render como +rimera
o+ci%n CP-thon o Ja*aScri+tDJ #anto +-thon como .a*ascri+t son
lengua.es inter+retados - +ara 'e, Csin ol*idar a +erlD3 +ero
tengo duda si +-thon +uede hacer lo mismo que .a*ascri+t3
aunque se que el +rimero +uede usarse igualmente +ara
a+licaciones de escritorio& Les mando un saludo =D
Respuesta: -ython y >avaScript son dos cosas
totalmente diferentes! #ientras ue >avaScript es un
lenguaje ue se procesa del lado del cliente% -ython%
lo hace del lado del servidor! -or otra parte%
>avaScript est enfocado a aportar valor a
aplicaciones ?eb% mientras ue -ython% es un
lenguaje de ms bajo nivel *aunue no permite
interactuar con el @ardAare de forma directa+ con el
ue se pueden desarrollar aplicaciones no solo ?eb
sino tambi:n de escritorio!
AG5ACIAS P65 LEE5/6S7
P56!2CI!6 E/ LA 5EP_BLICA A5GE/#I /A3 P65 (AC`E5S !E #6!6 EL M2/!63 PA5A P564ESI6/ALES !E #6!6 EL PLA/E#A&
-> #u "ona eGclusi*a

You might also like