SlideShare a Scribd company logo
1 of 33
Download to read offline
@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

More Related Content

What's hot

Herramientas Web1.Pot
Herramientas  Web1.PotHerramientas  Web1.Pot
Herramientas Web1.Potat_nena
 
Gutenberg revoluciona WordPress - Congreso Web 2018
Gutenberg revoluciona WordPress - Congreso Web 2018Gutenberg revoluciona WordPress - Congreso Web 2018
Gutenberg revoluciona WordPress - Congreso Web 2018Fernando Puente
 
Desarrollando Extensiones en OpenOffice.org
Desarrollando Extensiones en OpenOffice.orgDesarrollando Extensiones en OpenOffice.org
Desarrollando Extensiones en OpenOffice.orgAlexandro Colorado
 
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 AndroidIrontec
 
Windows Template Studio by Martin Vega
Windows Template Studio by Martin Vega Windows Template Studio by Martin Vega
Windows Template Studio by Martin Vega [T]echdencias
 
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
 
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 joomlaRoberto Segura
 
Introducción a PHPUnit
Introducción a PHPUnitIntroducción a PHPUnit
Introducción a PHPUnitAlicantePHP
 
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 microsoftJuan Carlos Ruiz Pacheco
 
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)Quique Fdez Guerra
 

What's hot (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 to 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 contableOpen ERP Finanzas
 
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 contableAlex Rayón Jerez
 
PHP Con symfony
PHP Con symfonyPHP Con symfony
PHP Con symfonycsalazart
 
PHP Unit y TDD
PHP Unit y TDDPHP Unit y TDD
PHP Unit y TDDEmergya
 
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 2019Santi Macias Rodriguez
 
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ónrobertogg
 
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
 
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 todosSanti Macias Rodriguez
 
Introducción a ASPNET vNext
Introducción a ASPNET vNextIntroducción a ASPNET vNext
Introducción a ASPNET vNextJulito Avellaneda
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y PythonCarlos Toxtli
 

Similar to 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
 

Recently uploaded

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 

Recently uploaded (12)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

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