SlideShare una empresa de Scribd logo
1 de 33
Descargar para leer sin conexión
@osrecio@osrecio 30/06/2017
De 0 a 100 con
Magento 2
2
@osrecio 30/06/2017
Óscar Recio
Lead Magento Developer
Mi previsión de #eCommerce para 2017 es:
"El humo se disipa"
@osrecio
osrecio
osrecio
osrecio.com
@osrecio 30/06/2017
Interactiv4
4
@osrecio 30/06/2017
Entorno Desarrollo Despliegue Consejos
¿ Qué vamos a ver ?
5
@osrecio 30/06/2017
Entorno
6
@osrecio 30/06/2017
Sistema Operativo
Linux Mac Win
Entorno
7
@osrecio 30/06/2017
Sistema Operativo
Linux Mac Win
Entorno
8
@osrecio 30/06/2017
Setup
PHP
PHP-FPM
Apache
Nginx
Mysql
Percona
MariaDb
Magento CE
Magento EE
PHP HTTP Mysql Magento
Entorno
9
@osrecio 30/06/2017
Setup
LAMP || MAMP
Linux/MacOS Apache + Mysql + PHP,
Es la opción más conocida popularmente
LEMP || MEMP
Linux/MacOS Nginx + Mysql + PHP,
Misma opción que L/MAMP pero con Nginx
LARAVEL VALET*
Sólo disponible para Mac
La forma más sencilla y rápida de montarse un env local
VAGRANT
Nos permite construir nuestras máquinas virtuales de
una forma rápida y automática
DOCKER
Conteneriza tu aplicación para que sea portable
Cada tecnología debería estar en 1 contenedor
Entorno
10
@osrecio 30/06/2017
Herramientas
Terminal
La principal herramienta de cualquier desarrollador. No le tengáis miedo, no muerde y
seguramente te ahorre mucho tiempo.
1
IDE ~ PHPStorm
Principalmente donde vamos a pasar el rato implementando nuestros módulo, temas,
etc. Es dónde ocurre la magia.
2
DBMS
Nuestro gestor de bases de datos. Si le prestamos atención podemos salvar segundos y
deadlocks de nuestro día a día.
3
Browser
Dónde la gente común ve cosas y compra sin saber el iceberg que hay por debajo.4
Photoshop / Gimp / Pixelmator
Tower / Sourcetree / GitKraken
Postman / Boomerang / Soap UI
Nyancat / Cmatrix / Hacker Typer
Sublime / Atom / Vim
git / tig / ssg / htop / ncdu
Entorno
11
@osrecio 30/06/2017
Desarrollo
12
@osrecio 30/06/2017
Creación de Componente
Módulos / Lenguajes / Temas / Librerías
Componente Magento 2
Semver
KeepChangeLog
Composer
1
2
4
Versionado semántico de nuestros módulos.
MAJOR versión: al realizar cambios de API incompatibles.
MINOR versión: cuando se agrega funcionalidad de una manera compatible con versiones anteriores.
PATCH versión: es cuando haces correcciones de errores compatibles con versiones anteriores.
Es el archivo que contiene una lista ordenada cronológicamente de cambios notables
para cada versión de un componente.
Es el fichero que definirá sus dependencias con otros componentes a la hora de
instalarse, además de informar de incompatibilidades con diferentes versiones etc.
3
MAJOR.MINOR.PATCH
README
Tu archivo README es normalmente el primer punto de entrada a tu código. Debe describir para que
se debe usar tu componente, cómo pueden instalarlo y cómo pueden usarlo.
Desarrollo
13
@osrecio 30/06/2017
Creación de módulo
Estructura básica
Desarrollo
Presentation Logic
Request handling
Configuration
Translations
Tests
Rendering
Register to App
Business Logic
14
@osrecio 30/06/2017
Optimiza tu tiempo
magento2-phpstorm-templates
phpstorm-live-templates-magento-2
LiveTemplates
pestle
Mage2gen
magento2-code-generator
Code Generation
n98-magerun2
n98-magerun
22%
41%
10%
25%
Este plugin ha salvado a más de un
desarrollador
Magicento
Desarrollo
Saber más
phpstorm directory types
Directory Types PHPStorm
2%
15
@osrecio 30/06/2017
Calidad de código
Mientras esculpes código te
irá informando de tus errores
PHPCS - PHPCBF / PHPMD
Siempre hay que pasar los test
Test
No se hace push si hay errores
GrumPHP
Una vez hemos pasado los
anteriores steps, estamos
listos para pushear
Push
Automated Code Review
Codacy / CodeClimate
Desarrollo
16
@osrecio 30/06/2017
Desarrollo
$ composer global require phpmd/phpmd
$ composer config -g repositories.magento composer https://repo.magento.com
$ composer global require magento-ecg/coding-standard
$ composer global require magento/marketplace-eqp
$ export PATH="$PATH:$HOME/.composer/vendor/bin" #Add to .zshrc .bashrc etc
$ phpcs --config-set installed_paths $HOME/.composer/vendor/magento-ecg/coding-standard/,$HOME/.composer/vendor/magento/marketplace-eqp/
$ phpcs -i
The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, Ecg, EcgM2, MEQP1 and MEQP2
PHPStorm
phpcs
Preferences > Languages & Frameworks > PHP > Code Sniffer : ~/.composer/vendor/bin/phpcs
Preferences > Editor > Inspections > PHP > PHP Code Sniffer validation: select standard from list
phpmd
Preferences > Languages & Frameworks > PHP > Mess Detector : ~/.composer/vendor/bin/phpmd
Preferences > Editor > Inspections > PHP > PHP Code Mess Detector validation: {magento_root}/dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml
Configurar PHPCS / PHPMD
Calidad de código
17
@osrecio 30/06/2017
Desarrollo
Tests
Calidad de código
./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist
Lanzar todos los tests
./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist
app/code/Example/Module/Test/Unit
Lanzar los tests de un módulo
DevDocs Magento
Configurar PHPStorm
magento dev:tests:run <test> <<all, unit,
integration, integration-all, static, static-all,
integrity, legacy, default>>
Lanzar tests desde Magento CLI
18
@osrecio 30/06/2017
Trabajar con ComposerDesarrollo
Dependency Manager for PHP
19
@osrecio 30/06/2017
Composer
¿ Cómo funciona ?
Resolve
dependencies
Generate
composer.lock
Download
packages
composer.json
Desarrollo
20
@osrecio 30/06/2017
Composer
¿ Cómo funciona ?
Satis
Repo
Resolve
dependencies
Generate
composer.lock
Download
packages
composer.json
Desarrollo
21
@osrecio 30/06/2017
Desarrollo
$ composer create-project composer/satis --stability=dev --keep-vcs
$ echo ‘{
"name": "Satis Repository",
"homepage": "http://repo.osrecio.com",
"repositories": [
{ "type": "vcs", "url": "https://github.com/osrecio/privaterepo" },
{ "type": "vcs", "url": "http://bitbuclet.org/private/repo" },
{ "type": "composer", "url": "https://repo.magento.com" }
],
"require-all": true
}
‘ > packages.conf
$ php ./satis/bin/satis build ./packages.conf ./packages-mirror
$ php -S localhost:8888 -t ./packages-mirror/
Trabajar con Composer
Satis
Saber más
22
@osrecio 30/06/2017
Trabajar con ComposerDesarrollo
Crear componente aséptico
Crear subcarpeta
Create Subfolder with unique
name
Require component
Add `require` in project
`composer.json`
Crear carpeta
Create Folder in root project
named `i4modules`
Añadir structura componente
Add module structure, `README.md`,
`CHANGELOG.md`, `composer.json` and
`src` (inside this folder will be the
module)
Repository path
Add repository type path
Begin to develop
Empieza con tu lógica de negocio
23
@osrecio 30/06/2017
Trabajar con ComposerDesarrollo
Crear componente aséptico EJEMPLO
24
@osrecio 30/06/2017
Trabajar con ComposerDesarrollo
“Paquetiza” un componente creado previamente
Componente
“Paquetizado”
Copiar componente
Añadir git
Crear tag y push
4
5
6
1
2
3
Crear carpeta
Crear Subcarpeta
Crear estructura comp.
Create Folder named
`i4modules`
Create Subfolder with unique
name
Create Subfolder `src`, add
`README.md`,
`CHANGELOG.md` and
`composer.json`
Copy Module from
`app/code/Interactiv4/{moduleN
ame}` to folder `src`
Init Git, Add Remote, Add files,
Commit Files
Create git tag with same version of
`composer.json`, Push your code to
repo with tag
Como resultado tenemos un repo
que podemos añadir a packagist o a
nuestro Satis
25
@osrecio 30/06/2017
Despliegue
26
@osrecio 30/06/2017
Deploy Tools
Opciones
Remote server automation and
deployment tool written in Ruby
Capistrano
Magento2 Deployment Setup using
Robo and Deployer
MageDeploy2
Deployment tool for PHP
Deployer
Deployment tool for Magento 2
created with PHing
Magento 2 Deploy Tool
Despliegue
27
@osrecio 30/06/2017
CI / CD
Continous Integration / Continous Delivery
CodeShip
CodeFresh
Jenkins
GitLab CI / Bitbucket Pipelines *
Circle CI
Despliegue
28
@osrecio 30/06/2017
Ejemplo
Despliegue en Producción
Despliegue
29
@osrecio 30/06/2017
Ejemplo
Despliegue en Producción
Run Build
Trigger Deploy from Jenkins
Run Tests
Run Integration, unit, static
tests
Build Assets
Change to production mode,
deploy:compile and
deploy:static:content
Deploy
Multistage deploy with
deployer
Create Artifacts
Create zip of project to being
deployed to prod env.Tool Setup
Install or update tools for
deploymentMagento Setup
Clone Repository
Update composer
Despliegue
30
@osrecio 30/06/2017
Consejos
31
@osrecio 30/06/2017
Tips and Tricks
1
Utiliza hirak/prestissimo para paralelizar la descargas con
composer
2
Deshabilita el módulo: Magento_Version
3
Parchea Magento a través de composer. James Cowie te
explica cómo
4
Ten siempre en tus proyectos una Developer Toolbar, aquí te
dejo un par: DT1 y DBT2
5
Si no sabes dónde encontrar cosas de Magento aquí te dejo
un par de resources: Awesome Magento 2 y Mageres
6
Sino te acuerdas de todos los comandos del magento cli y
estás todo el día con el grep, usa este autocomplete
7
Lee todos los #MagentoMonday que hace Sherrie si quieres
estar al día. Están en los foros de Magento
8
Sígueme en Twitter
Consejos
32
@osrecio 30/06/2017
Mis consejos
“Pasa algún tiempo investigando y
planificando tareas para dar una
estimación precisa”
Piensa y luego estima
“El mal no deja de estar equivocado
porque la mayoría participe en el”
El Core no es el Santo Grial
“No soy un excelente programador;
Soy un buen programador con
excelentes hábitos”
Testea todo lo que puedas
“Los pequeños detalles son vitales.
Las pequeñas cosas hacen que
sucedan grandes cosas”
Cada detalle importa
“La satisfacción radica en el
esfuerzo, no en el logro, el pleno
esfuerzo es la victoria completa”
Satisfacción
“La innovación distingue a un líder
de un seguidor”
Innova
Consejos
@osrecio 30/06/2017
¿ Preguntas ?
Gracias
@osrecio

Más contenido relacionado

La actualidad más candente

PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en Android
Irontec
 
Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...
Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...
Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...
ease3bubble
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnit
AlicantePHP
 
¿Por qué open source?
¿Por qué open source?¿Por qué open source?
¿Por qué open source?
Ana María Martínez Gómez
 

La actualidad más candente (17)

opensouthwts
opensouthwtsopensouthwts
opensouthwts
 
Herramientas Web1.Pot
Herramientas  Web1.PotHerramientas  Web1.Pot
Herramientas Web1.Pot
 
HERRAMUENTAS WEB
HERRAMUENTAS WEBHERRAMUENTAS WEB
HERRAMUENTAS WEB
 
Parte 2
Parte 2Parte 2
Parte 2
 
Gutenberg revoluciona WordPress - Congreso Web 2018
Gutenberg revoluciona WordPress - Congreso Web 2018Gutenberg revoluciona WordPress - Congreso Web 2018
Gutenberg revoluciona WordPress - Congreso Web 2018
 
Sobre GrooScript
Sobre GrooScriptSobre GrooScript
Sobre GrooScript
 
Desarrollando Extensiones en OpenOffice.org
Desarrollando Extensiones en OpenOffice.orgDesarrollando Extensiones en OpenOffice.org
Desarrollando Extensiones en OpenOffice.org
 
PHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en AndroidPHP for Android: scripting PHP en Android
PHP for Android: scripting PHP en Android
 
Windows Template Studio by Martin Vega
Windows Template Studio by Martin Vega Windows Template Studio by Martin Vega
Windows Template Studio by Martin Vega
 
2Shots WTS
2Shots WTS2Shots WTS
2Shots WTS
 
Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...
Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...
Every Thing One Needs To Understand About Purchasing Less Expensive Programa ...
 
Uso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomlaUso de tecnologías modernas en joomla
Uso de tecnologías modernas en joomla
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnit
 
Desarrollo de aplicaciones en plataformas no microsoft
Desarrollo de aplicaciones en plataformas no microsoftDesarrollo de aplicaciones en plataformas no microsoft
Desarrollo de aplicaciones en plataformas no microsoft
 
¿Por qué open source?
¿Por qué open source?¿Por qué open source?
¿Por qué open source?
 
Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!Jenkins, no me rompas los builds!
Jenkins, no me rompas los builds!
 
HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)HTML5 en el universo Windows (Apps universales)
HTML5 en el universo Windows (Apps universales)
 

Similar a De 0 a 100 con Magento 2

Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP Finanzas
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#
Vicente Gerardo Guzman Lucio
 
Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
Julito Avellaneda
 

Similar a De 0 a 100 con Magento 2 (20)

Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contableOpen ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
Open ERP e-Ghost-03-cursillo e-ghost 2010 - open erp como sw de gestion contable
 
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contableCursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
Cursillos e-ghost Septiembre 2010. Open ERP como software de gestión contable
 
Netbeans ide 7.2(2)
Netbeans ide 7.2(2)Netbeans ide 7.2(2)
Netbeans ide 7.2(2)
 
Netbeans ide 7.2(2)
Netbeans ide 7.2(2)Netbeans ide 7.2(2)
Netbeans ide 7.2(2)
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfony
 
Welcome to Django
Welcome to DjangoWelcome to Django
Welcome to Django
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDD
 
Pucela testingdays testing_en_php
Pucela testingdays testing_en_phpPucela testingdays testing_en_php
Pucela testingdays testing_en_php
 
CodeIgniter
CodeIgniterCodeIgniter
CodeIgniter
 
Git y github básico
Git y github básicoGit y github básico
Git y github básico
 
Un viaje por Azure DevOps - Meetup Barcelona 2019
Un viaje por Azure DevOps - Meetup Barcelona 2019Un viaje por Azure DevOps - Meetup Barcelona 2019
Un viaje por Azure DevOps - Meetup Barcelona 2019
 
Asp.net 5 en linux , herramientas e integración
Asp.net 5 en linux , herramientas e integraciónAsp.net 5 en linux , herramientas e integración
Asp.net 5 en linux , herramientas e integración
 
Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#Desarrollando mi primera App para Windows 8 con C#
Desarrollando mi primera App para Windows 8 con C#
 
NET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todosNET5 el nuevo framework unificado para gobernarlos a todos
NET5 el nuevo framework unificado para gobernarlos a todos
 
Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNext
 
Visual studio c_
Visual studio c_Visual studio c_
Visual studio c_
 
JS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World ExampleJS Patterns Applied to a Real World Example
JS Patterns Applied to a Real World Example
 
Netbeans ide 7.2
Netbeans ide 7.2Netbeans ide 7.2
Netbeans ide 7.2
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y Python
 
Practica adicional
Practica adicionalPractica adicional
Practica adicional
 

Último

editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
ssusere34b451
 

Último (20)

BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).BUSCADORES DE INTERNET (Universidad de Sonora).
BUSCADORES DE INTERNET (Universidad de Sonora).
 
Gestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL ServerGestión de concurrencia y bloqueos en SQL Server
Gestión de concurrencia y bloqueos en SQL Server
 
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
CIBERSEGURIDAD Y SEGURIDAD INFORMATICA .
 
Licencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de SoftwareLicencias para el Uso y el Desarrollo de Software
Licencias para el Uso y el Desarrollo de Software
 
Inteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicialInteligencia Artificial para usuarios nivel inicial
Inteligencia Artificial para usuarios nivel inicial
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdf
 
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptxNIVEL DE  MADUREZ TECNOLÓGICA (TRL).pptx
NIVEL DE MADUREZ TECNOLÓGICA (TRL).pptx
 
editorial de informática de los sueños.docx
editorial de informática de los sueños.docxeditorial de informática de los sueños.docx
editorial de informática de los sueños.docx
 
Uso de las TIC en la vida cotidiana .
Uso de las TIC en la vida cotidiana       .Uso de las TIC en la vida cotidiana       .
Uso de las TIC en la vida cotidiana .
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUALJORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
JORNADA INTELIGENCIA ARTIFICIAL Y REALIDAD VIRTUAL
 
¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf¡Mira mi nuevo diseño hecho en Canva!.pdf
¡Mira mi nuevo diseño hecho en Canva!.pdf
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
lenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometrialenguaje algebraico.pptx álgebra, trigonometria
lenguaje algebraico.pptx álgebra, trigonometria
 
Introducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptxIntroducción a la robótica con arduino..pptx
Introducción a la robótica con arduino..pptx
 
Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
TELECOMUNICACIONES- CAPITULO2: Modelo Osi ccna
TELECOMUNICACIONES- CAPITULO2: Modelo Osi ccnaTELECOMUNICACIONES- CAPITULO2: Modelo Osi ccna
TELECOMUNICACIONES- CAPITULO2: Modelo Osi ccna
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
Sistemas distribuidos de redes de computadores en un entorno virtual de apren...
 

De 0 a 100 con Magento 2

  • 1. @osrecio@osrecio 30/06/2017 De 0 a 100 con Magento 2
  • 2. 2 @osrecio 30/06/2017 Óscar Recio Lead Magento Developer Mi previsión de #eCommerce para 2017 es: "El humo se disipa" @osrecio osrecio osrecio osrecio.com
  • 4. 4 @osrecio 30/06/2017 Entorno Desarrollo Despliegue Consejos ¿ Qué vamos a ver ?
  • 9. 9 @osrecio 30/06/2017 Setup LAMP || MAMP Linux/MacOS Apache + Mysql + PHP, Es la opción más conocida popularmente LEMP || MEMP Linux/MacOS Nginx + Mysql + PHP, Misma opción que L/MAMP pero con Nginx LARAVEL VALET* Sólo disponible para Mac La forma más sencilla y rápida de montarse un env local VAGRANT Nos permite construir nuestras máquinas virtuales de una forma rápida y automática DOCKER Conteneriza tu aplicación para que sea portable Cada tecnología debería estar en 1 contenedor Entorno
  • 10. 10 @osrecio 30/06/2017 Herramientas Terminal La principal herramienta de cualquier desarrollador. No le tengáis miedo, no muerde y seguramente te ahorre mucho tiempo. 1 IDE ~ PHPStorm Principalmente donde vamos a pasar el rato implementando nuestros módulo, temas, etc. Es dónde ocurre la magia. 2 DBMS Nuestro gestor de bases de datos. Si le prestamos atención podemos salvar segundos y deadlocks de nuestro día a día. 3 Browser Dónde la gente común ve cosas y compra sin saber el iceberg que hay por debajo.4 Photoshop / Gimp / Pixelmator Tower / Sourcetree / GitKraken Postman / Boomerang / Soap UI Nyancat / Cmatrix / Hacker Typer Sublime / Atom / Vim git / tig / ssg / htop / ncdu Entorno
  • 12. 12 @osrecio 30/06/2017 Creación de Componente Módulos / Lenguajes / Temas / Librerías Componente Magento 2 Semver KeepChangeLog Composer 1 2 4 Versionado semántico de nuestros módulos. MAJOR versión: al realizar cambios de API incompatibles. MINOR versión: cuando se agrega funcionalidad de una manera compatible con versiones anteriores. PATCH versión: es cuando haces correcciones de errores compatibles con versiones anteriores. Es el archivo que contiene una lista ordenada cronológicamente de cambios notables para cada versión de un componente. Es el fichero que definirá sus dependencias con otros componentes a la hora de instalarse, además de informar de incompatibilidades con diferentes versiones etc. 3 MAJOR.MINOR.PATCH README Tu archivo README es normalmente el primer punto de entrada a tu código. Debe describir para que se debe usar tu componente, cómo pueden instalarlo y cómo pueden usarlo. Desarrollo
  • 13. 13 @osrecio 30/06/2017 Creación de módulo Estructura básica Desarrollo Presentation Logic Request handling Configuration Translations Tests Rendering Register to App Business Logic
  • 14. 14 @osrecio 30/06/2017 Optimiza tu tiempo magento2-phpstorm-templates phpstorm-live-templates-magento-2 LiveTemplates pestle Mage2gen magento2-code-generator Code Generation n98-magerun2 n98-magerun 22% 41% 10% 25% Este plugin ha salvado a más de un desarrollador Magicento Desarrollo Saber más phpstorm directory types Directory Types PHPStorm 2%
  • 15. 15 @osrecio 30/06/2017 Calidad de código Mientras esculpes código te irá informando de tus errores PHPCS - PHPCBF / PHPMD Siempre hay que pasar los test Test No se hace push si hay errores GrumPHP Una vez hemos pasado los anteriores steps, estamos listos para pushear Push Automated Code Review Codacy / CodeClimate Desarrollo
  • 16. 16 @osrecio 30/06/2017 Desarrollo $ composer global require phpmd/phpmd $ composer config -g repositories.magento composer https://repo.magento.com $ composer global require magento-ecg/coding-standard $ composer global require magento/marketplace-eqp $ export PATH="$PATH:$HOME/.composer/vendor/bin" #Add to .zshrc .bashrc etc $ phpcs --config-set installed_paths $HOME/.composer/vendor/magento-ecg/coding-standard/,$HOME/.composer/vendor/magento/marketplace-eqp/ $ phpcs -i The installed coding standards are MySource, PEAR, PHPCS, PSR1, PSR2, Squiz, Zend, Ecg, EcgM2, MEQP1 and MEQP2 PHPStorm phpcs Preferences > Languages & Frameworks > PHP > Code Sniffer : ~/.composer/vendor/bin/phpcs Preferences > Editor > Inspections > PHP > PHP Code Sniffer validation: select standard from list phpmd Preferences > Languages & Frameworks > PHP > Mess Detector : ~/.composer/vendor/bin/phpmd Preferences > Editor > Inspections > PHP > PHP Code Mess Detector validation: {magento_root}/dev/tests/static/testsuite/Magento/Test/Php/_files/phpmd/ruleset.xml Configurar PHPCS / PHPMD Calidad de código
  • 17. 17 @osrecio 30/06/2017 Desarrollo Tests Calidad de código ./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist Lanzar todos los tests ./vendor/bin/phpunit -c dev/tests/unit/phpunit.xml.dist app/code/Example/Module/Test/Unit Lanzar los tests de un módulo DevDocs Magento Configurar PHPStorm magento dev:tests:run <test> <<all, unit, integration, integration-all, static, static-all, integrity, legacy, default>> Lanzar tests desde Magento CLI
  • 18. 18 @osrecio 30/06/2017 Trabajar con ComposerDesarrollo Dependency Manager for PHP
  • 19. 19 @osrecio 30/06/2017 Composer ¿ Cómo funciona ? Resolve dependencies Generate composer.lock Download packages composer.json Desarrollo
  • 20. 20 @osrecio 30/06/2017 Composer ¿ Cómo funciona ? Satis Repo Resolve dependencies Generate composer.lock Download packages composer.json Desarrollo
  • 21. 21 @osrecio 30/06/2017 Desarrollo $ composer create-project composer/satis --stability=dev --keep-vcs $ echo ‘{ "name": "Satis Repository", "homepage": "http://repo.osrecio.com", "repositories": [ { "type": "vcs", "url": "https://github.com/osrecio/privaterepo" }, { "type": "vcs", "url": "http://bitbuclet.org/private/repo" }, { "type": "composer", "url": "https://repo.magento.com" } ], "require-all": true } ‘ > packages.conf $ php ./satis/bin/satis build ./packages.conf ./packages-mirror $ php -S localhost:8888 -t ./packages-mirror/ Trabajar con Composer Satis Saber más
  • 22. 22 @osrecio 30/06/2017 Trabajar con ComposerDesarrollo Crear componente aséptico Crear subcarpeta Create Subfolder with unique name Require component Add `require` in project `composer.json` Crear carpeta Create Folder in root project named `i4modules` Añadir structura componente Add module structure, `README.md`, `CHANGELOG.md`, `composer.json` and `src` (inside this folder will be the module) Repository path Add repository type path Begin to develop Empieza con tu lógica de negocio
  • 23. 23 @osrecio 30/06/2017 Trabajar con ComposerDesarrollo Crear componente aséptico EJEMPLO
  • 24. 24 @osrecio 30/06/2017 Trabajar con ComposerDesarrollo “Paquetiza” un componente creado previamente Componente “Paquetizado” Copiar componente Añadir git Crear tag y push 4 5 6 1 2 3 Crear carpeta Crear Subcarpeta Crear estructura comp. Create Folder named `i4modules` Create Subfolder with unique name Create Subfolder `src`, add `README.md`, `CHANGELOG.md` and `composer.json` Copy Module from `app/code/Interactiv4/{moduleN ame}` to folder `src` Init Git, Add Remote, Add files, Commit Files Create git tag with same version of `composer.json`, Push your code to repo with tag Como resultado tenemos un repo que podemos añadir a packagist o a nuestro Satis
  • 26. 26 @osrecio 30/06/2017 Deploy Tools Opciones Remote server automation and deployment tool written in Ruby Capistrano Magento2 Deployment Setup using Robo and Deployer MageDeploy2 Deployment tool for PHP Deployer Deployment tool for Magento 2 created with PHing Magento 2 Deploy Tool Despliegue
  • 27. 27 @osrecio 30/06/2017 CI / CD Continous Integration / Continous Delivery CodeShip CodeFresh Jenkins GitLab CI / Bitbucket Pipelines * Circle CI Despliegue
  • 29. 29 @osrecio 30/06/2017 Ejemplo Despliegue en Producción Run Build Trigger Deploy from Jenkins Run Tests Run Integration, unit, static tests Build Assets Change to production mode, deploy:compile and deploy:static:content Deploy Multistage deploy with deployer Create Artifacts Create zip of project to being deployed to prod env.Tool Setup Install or update tools for deploymentMagento Setup Clone Repository Update composer Despliegue
  • 31. 31 @osrecio 30/06/2017 Tips and Tricks 1 Utiliza hirak/prestissimo para paralelizar la descargas con composer 2 Deshabilita el módulo: Magento_Version 3 Parchea Magento a través de composer. James Cowie te explica cómo 4 Ten siempre en tus proyectos una Developer Toolbar, aquí te dejo un par: DT1 y DBT2 5 Si no sabes dónde encontrar cosas de Magento aquí te dejo un par de resources: Awesome Magento 2 y Mageres 6 Sino te acuerdas de todos los comandos del magento cli y estás todo el día con el grep, usa este autocomplete 7 Lee todos los #MagentoMonday que hace Sherrie si quieres estar al día. Están en los foros de Magento 8 Sígueme en Twitter Consejos
  • 32. 32 @osrecio 30/06/2017 Mis consejos “Pasa algún tiempo investigando y planificando tareas para dar una estimación precisa” Piensa y luego estima “El mal no deja de estar equivocado porque la mayoría participe en el” El Core no es el Santo Grial “No soy un excelente programador; Soy un buen programador con excelentes hábitos” Testea todo lo que puedas “Los pequeños detalles son vitales. Las pequeñas cosas hacen que sucedan grandes cosas” Cada detalle importa “La satisfacción radica en el esfuerzo, no en el logro, el pleno esfuerzo es la victoria completa” Satisfacción “La innovación distingue a un líder de un seguidor” Innova Consejos
  • 33. @osrecio 30/06/2017 ¿ Preguntas ? Gracias @osrecio