Se denomina cloud computing a las plataformas que ofrecen servicios web a través de la internet, permitiendo el almacenamiento de datos en "la nube". Las empresas que pertenecen a esta rama ofrecen los servicios online, es decir, sin necesidad de descargas y sin importar la capacidad de tu ordenador.

Estas plataformas proporcionan un entorno con todos los requisitos necesarios para dar soporte a todo el ciclo de vida de creación y puesta en marcha de aplicaciones basadas en web, sin el coste y la complejidad de gestionar el hardware, software, etc. Esto debido a que la infraestructura suministra los recursos informáticos, incluyendo servidores, redes, almacenamiento y espacio en centro de datos con pago en función del uso.

Gracias al modelo de pago on demand que utiliza el Cloud Computing, al no requerir la instalación de infraestructuras ni mantenimiento, los costes se reducen drásticamente sin afectar la calidad del servicio debido a que las aplicaciones en “la nube” no quedan obsoletas.

La seguridad en "la nube" es superior a la de una instalación física. Las certificaciones y acreditaciones, el cifrado de datos en reposo y en tránsito, los módulos de seguridad hardware y un hardware apropiado contribuyen para crear un modo más seguro de administrar la infraestructura de TI de su negocio.

Una de las ofertas internacionales más importantes de la computación en la nube es Amazon Web Services (AWS abreviado). AWS ofrece servicios en línea para otros sitios web o aplicaciones del lado del cliente y se accede a través de HTTP, utilizando protocolos REST y SOAP.

Amazon Web Services ofrece un amplio conjunto de productos globales basados en cloud computing, incluidas aplicaciones de informática, almacenamiento de archivos, bases de datos, análisis, plataforma para redes, aplicaciones para móviles, herramientas para desarrolladores, herramientas de administración, interconexión digital de objetos cotidianos con internet (IoT), seguridad y recursos empresariales. Estos servicios ayudan a las empresas a avanzar con mayor rapidez, reducir los costos de TI y escalar. AWS tiene la confianza de importantes compañías y las empresas emergentes más innovadoras, para respaldar una amplia variedad de cargas de trabajo como las aplicaciones web y móviles, el desarrollo de juegos, el almacenamiento y procesamiento de datos, el almacenamiento en general, el archivado y muchas otras.

Productos de AWS

Amazon lanzó su servicio web oficialmente en 2006 y para junio de 2007 AWS ya contaba con una base de usuarios de aproximadamente 180 mil personas. Entre las empresas mas conocidas que utilizan AWS se encuentra: Reddit, Foursquare, Pinterest, Netflix, NASA, CIA entre otros.

Esto se debe principalmente a la madurez del servicio frente a otros similares y las posibilidades que ofrece el amplio abanico de herramientas disponibles.

La nube de AWS incluye 54 zonas de disponibilidad distribuidas en 18 regiones geográficas y en 1 región local en todo el mundo, con planes anunciados para crear 12 zonas más y cuatro regiones adicionales en Bahréin, Hong Kong, Suecia y una segunda región AWS GovCloud en los EE.UU.

Actualmente la empresa JMG Virtual Consulting ofrece cursos aws para obtener la certificación oficial AWS Associate – Solutions Architect certification.

Este curso es bonificable para empresas en España por la Fundación Tripartita con 288€.

Leer más

InterPlanetary File System (IPFS) es un nuevo protocolo de Internet que busca renovar todos los protocolos actuales ofreciendo una solución todo-en-uno con la que poder cubrir prácticamente cualquier necesidad.

El protocolo IPFS permite crear aplicaciones totalmente distribuidas, garantizando así su disponibilidad a lo largo de la red sin depender de un único servidor centralizado para brindar un servicio concreto.

Este protocolo, de forma generalizada, es igual que la web actual, aunque implementando en él el protocolo bitTorrent para garantizar el acceso a toda la información que posee en todo momento.

IPFS nació en el 2015 pero ya desde el 2014 se hablaba de el.

Características

https://ipfs.io

Cada archivo y todos los bloques dentro de él reciben una huella digital única llamada hash criptográfico.

https://ipfs.io

IPFS elimina las duplicaciones en la red y rastrea el historial de versiones de cada archivo.

https://ipfs.io

Cada nodo de red almacena solo el contenido que le interesa y cierta información de indexación que ayuda a determinar quién está almacenando qué.

https://ipfs.io

Al buscar archivos, le está pidiendo a la red que busque nodos que almacenan el contenido detrás de un hash único.

https://ipfs.io

Cada archivo se puede encontrar con nombres legibles por humanos usando un sistema de nombres descentralizado llamado IPNS.

IPFS esta disponible para:

  • Linux
  • Windows
  • Mac

Puedes saber más leyendo su documentación

Fuente: ipfs.io

Leer más

En mi trabajo actual me han preguntado la razón de usar adminer sobre phpMyAdmin. Este post trata de explicar esas razones

Adminer inicio con el nombre de phpMinAdmin es una herramienta de gestión de bases de datos con todas las funciones escrita en PHP.

Su principal característica es que consiste en un único archivo listo para implementar en nuestro servidor local o de producción.

Con adminer puedes gestionar bases de datos:

  • MySQL
  • PostgreSQL
  • SQLite
  • MS SQL
  • Oracle
  • Firebird
  • SimpleDB
  • Elasticsearch
  • MongoDB

Adminer es un archivo php que permite gestionar diferentes tipos de base de datos

Adminer cuenta tambien con una serie de plugins que permiten aumentar la versatilidad de esta herramienta.

Tip

Adminer cuenta con una serie de "skins" para cambiar la apariencia ya que la vista por defecto no es bonita. La apariencia de la interfaz de Adminer podemos modificarla de una manera muy sencilla empleando un archivo CSS llamado adminer.css. Este archivo debe estar en la misma carpeta que el archivo php de Adminer.

Visitar: adminer.org

Leer más

JSON Feed es un nuevo estándar para formalizar un feed RSS basado en JSON que pretende simplificar la creación de feeds eliminando el estándar XML. La implementación de un feed para su sitio es simple y la especificación es sorprendentemente clara.

ejemplo:

{
    "version": "https://jsonfeed.org/version/1",
    "title": "My Example Feed",
    "home_page_url": "https://example.org/",
    "feed_url": "https://example.org/feed.json",
    "items": [
        {
            "id": "2",
            "content_text": "This is a second item.",
            "url": "https://example.org/second-item"
        },
        {
            "id": "1",
            "content_html": "<p>Hello, world!</p>",
            "url": "https://example.org/initial-post"
        }
    ]
}

La estructura de un feed

Un feed JSON comienza con alguna información en la parte superior: dice de dónde proviene el feed, y puede decir quién lo creó, etc.

Después de eso, hay una serie de objetos, elementos, que describen cada objeto en la lista.

Para conocer todas las caracteristicas te invito a leer las especificaciones.

Ejemplo rápido con laravel

Obtener la lista de post

$posts = Posts::latest();

Configura los datos basicos para el JSON Feed

La especificación de JSON Feed tiene algunos campos de nivel superior opcionales, como título, URL de fuente, ícono de sitio y más. Estos campos no son dinámicos por lo que hay que agregarlos a un arreglo de forma manual:


$data = [
    'version' => 'https://jsonfeed.org/version/1',
    'title' => 'El nombre de tu feed',
    'home_page_url' => 'https://domain.tld',
    'feed_url' => 'https://domain.tld/feed/json',
    'icon' => 'https://domain.tld/apple-touch-icon.png',
    'favicon' => 'https://domain.tld/apple-touch-icon.png',
    'items' => [],
];

NOTA en el campo items vamos a colocar todos los items (valga la redundancia) de los post.

Agregando los items al feed

Este punto es lo más sencillo del mundo, unicamente hay que hacer:

foreach ($posts as $key => $post) {
    $data['items'][$key] = [
        'id' => $post->id,
        'title' => $post->title,
        'url' => 'https://domain.tld/'.$post->uri, // o la ruta de los post
        'image' => $post->featured_image,
        'content_html' => $post->content,
        'date_published' => $post->created_at->tz('UTC')->toRfc3339String(),
        'date_modified' => $post->updated_at->tz('UTC')->toRfc3339String(),
        'author' => [
            'name' => $post->user->name
        ],
    ];
}

El resultado final

Nuestro metodo quedaria de esta forma:

public function jsonFeed()
{
    $posts = Posts::latest();

    $data = [
        'version' => 'https://jsonfeed.org/version/1',
        'title' => 'El nombre de tu feed',
        'home_page_url' => 'https://domain.tld',
        'feed_url' => 'https://domain.tld/feed/json',
        'icon' => 'https://domain.tld/apple-touch-icon.png',
        'favicon' => 'https://domain.tld/apple-touch-icon.png',
        'items' => [],
    ];

    foreach ($posts as $key => $post) {
        $data['items'][$key] = [
            'id' => $post->id,
            'title' => $post->title,
            'url' => 'https://domain.tld/'.$post->uri, // o la ruta de los post
            'image' => $post->featured_image,
            'content_html' => $post->content,
            'date_created' => $post->publishes_at->tz('UTC')->toRfc3339String(),
            'date_modified' => $post->updated_at->tz('UTC')->toRfc3339String(),
            'author' => [
                'name' => $post->user->name
            ],
        ];
    }
    return $data;
}

En nuestro archivo de rutas podemos tener algo como esto:

Route::get('/feeds/json', 'JsonFeedController@jsonFeed')->name('json.feed');

Y en el header colocamos algo como esto:

<link rel="alternate" title="El nombre de tu feed" type="application/json" href="{{ route('json.feed') }}" />

Y listo, ya tenemos nuestro JSON Feed configurado completamente...

Leer más

Un paquete para minimizar el output HTML "on demand" con un +35% de optimización del sitio web.

La instalación

La instalación de este paquete es muy facil

$ composer require renatomarinho/laravel-page-speed

Si usas laravel 5.5 ya todo esta configurado.

Si estas en una versión anterior debes editar el archivo config/app.php y agregar lo siguiente:

RenatoMarinho\LaravelPageSpeed\ServiceProvider::class

Archivo de configuración

Terminado el proceso de instalación debes publicar el archivo de configuración con la siguiente instrucción

$ php artisan vendor:publish --provider="RenatoMarinho\LaravelPageSpeed\ServiceProvider"

Agregar los middlewares

Ahora debes registrar los middlewares de la siguiente forma

//app/Http/Kernel.php

protected $middleware = [
    ...
    \RenatoMarinho\LaravelPageSpeed\Middleware\InlineCss::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\ElideAttributes::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\InsertDNSPrefetch::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\RemoveComments::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\TrimUrls::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\RemoveQuotes::class,
    \RenatoMarinho\LaravelPageSpeed\Middleware\CollapseWhitespace::class,
]

Como usar el paquete

Podemos crear una variable en nuestro archvo .env que contenga lo siquiente:

LARAVEL_PAGE_SPEED_ENABLE=true

El paquete por defecto tiene esta opción activa. Si en algun momento quieres cambiar este comportamiento debes hacerlo aquí.

Evitar la compresión de rutas

Para evitar que ciertas rutas sean minificadas lo unico que hay que hacer es editar el archivo config/laravel-page-speed.php e indicar la ruta.

//config/laravel-page-speed.php

//You can use * as wildcard.
'skip' => [
    '*.pdf', //Ignore all routes with final .pdf
    '*/downloads/*',//Ignore all routes that contain 'downloads'
];

Antes de usar el paquete

renatomarinho/laravel-page-speed

Despues de usar el paquete

renatomarinho/laravel-page-speed

Para más información clic aquí.

Leer más

Este paquete agrega un puñado de comandos relacionados con la vista a Artisan en tu proyecto Laravel. Te permite generar archivos blade que extienden desde otras vistas usando la línea de comandos.

Como instalar:

Usando composer

$ composer require sven/artisan-view:^2.0 --dev

Como usar:

Si escribes php artisan van a existir dos nuevos comandos disponibles:

make:view
scrap:view

Crear vistas

// Create a view 'index.blade.php' in the default directory
$ php artisan make:view index

// Create a view 'index.blade.php' in a subdirectory ('pages')
$ php artisan make:view pages.index

// Create a view with a different file extension ('index.html')
$ php artisan make:view index --extension=html

Espero que este paquete les sea útil tanto como a mi

Para más info clic aquí

Leer más

Este paquete de laravel nos permite publicar en varias redes sociales de forma automatica, acutalmente estan soportadas

  • Telegram Channel (‌Based on Telegram Bot API)
  • Twitter
  • Facebook

La instalación es muy sencilla

$ composer require toolkito/larasap

Y luego

$ php artisan vendor:publish --tag=larasap

? Quick examples:

⭐ Telegram examples:

? Send text message to Telegram:

 SendTo::Telegram('Hello, I\'m testing Laravel social auto posting');

? Send photo to Telegram:

  SendTo::Telegram(
      'Hello, I\'m testing Laravel social auto posting', // Photo caption (Optional)
      [
          'type' => 'photo', // Message type (Required)
          'file' => 'https://i.imgur.com/j6bzKQc.jpg' // Image url (Required)
      ],
      '' // Inline keyboard (Optional)
  );

? Send audio to Telegram:

SendTo::Telegram(
   'Hello, I\'m testing Laravel social auto posting', // Audio caption (Optional)
   [
       'type' => 'audio', // Message type (Required)
       'file' => 'http://example.com/let-me-be-your-lover.mp3', // Audio url (Required) 
       'duration' => 208, // Duration of the audio in seconds (Optional)
       'performer' => 'Enrique Iglesias', // Performer (Optional)
       'title' => 'Let Me Be Your Lover' // Track name (Optional)
   ],
  '' // Inline keyboard (Optional)
);

? Send document to Telegram:

SendTo::Telegram(
    'Hello, I\'m testing Laravel social auto posting', // Document caption
    [
        'type' => 'document', // Message type (Required)
        'file' => 'http://example.com/larasap.pdf', // Document url (Required)
    ],
   '' // Inline keyboard (Optional)
);

? Send video to Telegram:

SendTo::Telegram(
   'Hello, I\'m testing Laravel social auto posting', // Video caption (Optional)
   [
       'type' => 'video', // Message type (Required)
       'file' => 'http://example.com/let-me-be-your-lover.mp4', // Audio url (Required) 
       'duration' => 273, // Duration of sent video in seconds (Optional)
       'width' => 1920, // Video width (Optional)
       'height' => 1080 // Video height (Optional)
   ],
  '' // Inline keyboard (Optional)
);

? Send voice to Telegram:

SendTo::Telegram(
   'Hello, I\'m testing Laravel social auto posting', // Voice message caption (Optional)
   [
       'type' => 'voice', // Message type (Required)
       'file' => 'https://upload.wikimedia.org/wikipedia/en/9/9f/Sample_of_%22Another_Day_in_Paradise%22.ogg', // Audio url (Required) 
       'duration' => 28 // Duration of the voice message in seconds (Optional)
   ],
  '' // Inline keyboard (Optional)
);

? Send media group to Telegram:

SendTo::Telegram(
    null,
    [
        'type' => 'media_group', // Message type (Required)
        'files' => // Array describing photos and videos to be sent, must include 2–10 items
        [
            [
                'type' => 'photo', // Media type (Required)
                'media' => 'https://i.imgur.com/j6bzKQc.jpg', // Media url (Required)
                'caption' => 'Laravel sccial auto posting' // Media caption (Optional)
            ],
            [
                'type' => 'video', // Media type (Required)
                'media' => 'http://example.com/let-me-be-your-lover.mp4', // Media url (Required)
                'caption' => 'Let me be your lover' // Media caption (Optional)
            ]
        ]
    ]
);

? Send point on the map to Telegram:

SendTo::Telegram(
    null,
    [
        'type' => 'location', // Message type (Required)
        'latitude' => 36.1664345, // Latitude of the location (Required)
        'longitude' => 58.8209904, // Longitude of the location (Required)
        'live_period' => 86400, // Period in seconds for which the location will be updated (Optional)
        '' // Inline keyboard (Optional)
);

? Send information about a venue to Telegram:

SendTo::Telegram(
    null,
    [
        'type' => 'venue', // Message type (Required)
        'latitude' => 36.166048, // Latitude of the location (Required)
        'longitude' => 58.822121, // Longitude of the location (Required)
        'title' => 'Khayyam', // Name of the venue (Required)
        'address' => 'Neyshabur, Razavi Khorasan Province, Iran', // Address of the venue (Required)
        'foursquare_id' => '', // Foursquare identifier of the venue (Optional)
        '' // Inline keyboard (Optional)
);

? Send phone contacts to Telegram:

SendTo::Telegram(
    null,
    [
        'type' => 'contact', // Message type (Required)
        'phone_number' => '+12025550149', // Contact's phone number (Required)
        'first_name' => 'John', // Contact's first name (Required)
        'last_name' => 'Doe', // Contact's last name (Optional)
        '' // Inline keyboard (Optional)
    ]
);

? Send message with inline button to Telegram:

SendTo::Telegram(
    'Laravel social auto posting',
    '',
    [
        [
            [
                'text' => 'Github',
                'url' => 'https://github.com/toolkito/laravel-social-auto-posting'
            ]
        ],
        [
            [
                'text' => 'Download',
                'url' => 'https://github.com/toolkito/laravel-social-auto-posting/archive/master.zip'
            ],
        ]
    ]
);

Or

SendTo::Telegram(
    'Laravel social auto posting',
    '',
    [
        [
            [
                'text' => 'Github',
                'url' => 'https://github.com/toolkito/laravel-social-auto-posting'
            ],
            [
                'text' => 'Download',
                'url' => 'https://github.com/toolkito/laravel-social-auto-posting/archive/master.zip'
            ],
        ]
    ]
);

⭐ Twitter examples:

✨ Text tweet:

SendTo::Twitter('Hello, I\'m testing Laravel social auto posting');

✨ Tweet with media:

SendTo::Twitter(
    'Hello, I\'m testing Laravel social auto posting',
    [
        public_path('photo-1.jpg'),
        public_path('photo-2.jpg')
    ]
);

⭐ Facebook examples:

? Send link to Facebook page:

SendTo::Facebook(
    'link',
    [
        'link' => 'https://github.com/toolkito/laravel-social-auto-posting',
        'message' => 'Laravel social auto posting'
    ]
);

? Send photo to Facebook page:

SendTo::Facebook(
    'photo',
    [
        'photo' => public_path('img/1.jpg'),
        'message' => 'Laravel social auto posting'
    ]
);

? Send video to Facebook page:

SendTo::Facebook(
    'video',
    [
        'video' => public_path('upload/1.mp4'),
        'title' => 'Let Me Be Your Lover',
        'description' => 'Let Me Be Your Lover - Enrique Iglesias'
    ]
);

Leer más

¿Qué hace que una campaña de mailing sea la mejor? ¿Qué pasos debes tener en cuenta para que sea un éxito?

El marketing por email además de ser una de las herramientas clásicas, se esta convirtiendo en una herramienta más de fidelización del usuario.

De seguro eres de los que piensa que por el hecho de que el email llegó a una bandeja de entrada implica que éste vaya a ser efectivo al 100%.

Pues lamentablemente no es así, para lograr que sea un éxito hay que cuidar aspectos como

  • Nuestra base de datos
  • Hablar a nuestros usuarios de tú a tú
  • Medir la frecuencia de envío
  • Cuidar el mensaje (ortografía)

Estos son los pasos más esenciales para aumentar la apertura del email para conseguir nuestro objetivo con éxito:

Dar a conocer nuestro mensaje y amplificarlo.

Las ventajas del marketing por email

El marketing por email, nos permite llegar a nuestros usuarios o clientes de forma más directa y exitosa. Existen múltiples razones por las que crear una campaña de emailing es una muy buena idea:

  • Es eficaz
  • Permite segmentar o personalizar a tus clientes o usuarios
  • Es medible
  • Flexibilidad de formatos
  • Fidelidad
  • Es un medio no intrusivo
  • De bajo costo

No se trata de hacer SPAM

Día a día recibimos decenas, o hasta cientos de correos basura, con las más diversas ofertas, los cuales la mayoría de las veces son eliminados por filtros de seguridad.

Usualmente podemos tener una lista de spam como la siguiente:

  • Ofertas de capacitación.
  • Venta de propiedades.
  • Sitios de apuestas en línea.

Que un usuario/cliente te dé su email no implica que te conviertas en un robot sin alma. Al contrario, ese gesto de confianza que ha tenido contigo deberías pagárselo ofreciéndole aún mejor contenido. Y como no, también contenido vip: información a la que solo puedan acceder los suscriptores.

¿Cómo lograr un marketing por email Efectivo?

  • Construyendo una base de datos de clientes y potenciales clientes que deseen recibir información por correo electrónico, de nuestra empresa, y sus productos y servicios. La lista de destinatarios es uno de los activos más importantes para una campaña de marketing por email.

Es un error comprar o vender bases de datos, o abusar de ellas, pues solo logramos jugar contra nuestros propios intereses.

  • El Email debe entregar un valor agregado a nuestros clientes. Queremos ofrecerles algo que haga una diferencia para sus vidas, y no simplemente conseguir que hagan click en un link para aumentar el tráfico de nuestro sitio web. Luego nos preocupamos de recuperar el valor.

Queremos un cliente fiel, que participe activamente con nuestro negocio, y no una gran masa de visitas que no duran más de 5 segundos en nuestro sitio.

  • Midiendo el impacto de la campaña, con distintas herramientas de seguimiento. Nos interesa saber cuántos de nuestra lista abrieron realmente el correo que le enviamos, y cuantos ni siquiera lo recibieron. Para ello, existen distintas herramientas que podemos implementar. Algunas de ellas son gratuitas y otras pagadas, y nos entregan distinta información que puede sernos de mucha utilidad para extender las acciones de marketing en Internet al largo plazo.

  • El marketing por email puede potenciarse en combinación con el Social Marketing a través de redes sociales como Facebook o Twitter, apuntando a un crecimiento orgánico de las bases de datos, y una propagación extensiva de nuestro mensaje.

Leer más

Cada vez más personas están interesadas en ganar dinero de manera remota desde la comodidad de su hogar, utilizando las herramientas online que permite hacer trabajos freelance a través de una conexión a internet, como por ejemplo http://www.comoganardinero.pro/.

Los motivos para desear este tipo de trabajos son diversos, algunas personas son amas de casa y desean tener una entrada de dinero extra que les permita mejorar su calidad de vida, otros tienen trabajos fijos pero el sueldo no es suficiente para cubrir sus necesidades. Incluso los hay los que simplemente les gusta trabajar cómodos y en pijamas desde su hogar.

Sea cual sea el motivo, la realidad es que cada vez se ve mayor cantidad de personas que buscan información sobre cómo ganar dinero por internet. Y de igual manera, cada vez se encuentran mas y mas páginas web que explican cómo lograrlo, desde cosas sencillas como hacer click en publicidad y recibir el dinero por paypal.

En este caso nos vamos a centrar en la manera de ganar de dinero por internet como programador freelance tanto por la importancia que supone ganar dinero remotamente desde casa, como para estimular el cerebro enseñándolo a trabajar de manera lógica y estructurada.

Primero lo primero, el mundo moderno necesita programadores. Por todos lados consigues ofertas de trabajo para backend y frontend, y en la mayoría de los países es muy bien remunerado este tipo trabajo. Todos necesitan o quieren montar una web, un sistema de facturación, o por lo menos un mini gestor de asistencia. Y para eso es necesario programadores.

Los programadores son los prestidigitadores que van a hacer realidad que cuando un usuario se siente en la computadora, o abra una aplicación en su celular, todo funcione como debe ser. Por lo tanto, mientras mejor preparados estén, mas cotizados serán.

Lo más común es recibir ofertas de trabajo para programadores freelance en el área de desarrollo web, y esto es fantástico ya que hay muchísimos tutoriales gratuitos y videos en youtube que te enseñan a programar en los lenguajes apropiados y mas solicitados.

Veamos los términos frontend y backend.

El desarrollador frontend es el programador que se encarga de escribir el código que representa la interfaz a la que va a acceder directamente el usuario cuando se conecte al sistema. Estos programas se ejecutan directamente en el equipo del cliente, al ser interpretado por el navegador y mostrado inmediatamente en la pantalla. Usualmente cuando solicitan un programador con este tipo de habilidades se refieren a que domine los siguientes lenguajes: HTML5, CSS Y JavaScript. Por lo que recomendamos a aquel que desee empezar a programar desde cero, iniciarse con estos lenguajes por su facilidad de aprendizaje y la ventaja que supone poder rápidamente ofrecer sus servicios como freelance.

El programador backend es aquel que debe codificar los algoritmos que van a permitir la manipulación de la data, las interacciones con las bases de datos, las consultas del lado del servidor, y las respuestas en el formato adecuado que se envían al navegador, entre otros.

La variedad de lenguajes de programación y bases de datos que se utilizan en este tipo de desarrollo permiten un amplio abanico de especializaciones, y abundantes ofertas de trabajo. Mas adelante profundizaremos en este tema.

Leer más

La abstracción que ofrece MJML permite estar siempre al corriente del standar y mejores prácticas de la industria, ya que se actualiza constantemente en base a los cambios en las especificaciones de los clientes de correo, y esto nos garantiza que siempre generará código HTML válido y optimizado.

Instalación

En tu terminal debes escribir:

$ npm i -g mjml

Crear una plantilla

Debes crear una plantilla con la extension .mjml y debe contener algo como esto:

<mj-section>
    <mj-column>
        <mj-text align="left">HEADER TEXT</mj-text>
    </mj-column>
    <mj-column>
        <mj-text align="right">
            <a href="email-permalink"> Lorem ipsum </a>
        </mj-text>
    </mj-column>
</mj-section>
<mj-section background-url="/assets/img/background-url.jpg">
    <mj-column>
        <mj-image src="/assets/img/mj-image.jpeg"></mj-image>
        <mj-text align="center"> Lorem ipsum </mj-text>
        <mj-button> Discover </mj-button>
    </mj-column>
</mj-section>

Para convertir el archivo .mjml a un archivo .html hay que escribir esto en la terminal:

$ mjml input.mjml -o my-email.html

Para mayor informacion visitar la web del proyecto: https://mjml.io.

Leer más