<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>Blog de Diseño Web Vida MRR</title><description>Blog de recursos y colecciones web para los amantes del diseño web y amantes de la tecnología.</description><managingEditor>noreply@blogger.com (Marcos Rivas Rojas)</managingEditor><pubDate>Sun, 8 Oct 2023 01:29:26 -0600</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">4568</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://www.vidamrr.com/</link><language>en-us</language><item><title>Tutorial de useState() en React.js</title><link>http://www.vidamrr.com/2020/04/tutorial-de-usestate-en-reactjs.html</link><category>javascript</category><category>reactjs</category><category>tutoriales</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Thu, 23 Apr 2020 16:16:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-8094087436718135753</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-bFErYEjXmR0/XqIFb5ChZZI/AAAAAAAAvSA/rxAJ4sWBPT4Lxmw7AyQMi3gTR5u4XNVXgCLcBGAsYHQ/s1600/usestate-react-js.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://1.bp.blogspot.com/-bFErYEjXmR0/XqIFb5ChZZI/AAAAAAAAvSA/rxAJ4sWBPT4Lxmw7AyQMi3gTR5u4XNVXgCLcBGAsYHQ/s640/usestate-react-js.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Una de las funcionalidades que a muchos les causa confusión es la de usar hooks en React. Los hooks son una característica que nos ayuda a seguir implementando componentes en React.js usando la misma estructura de función. Uno de los hooks más conocidos es el hook de estado &lt;code&gt;useState()&lt;/code&gt;.&lt;br /&gt;
En este tutorial vamos a ver dónde y cuándo debemos utilizar el hook de estado en nuestras aplicaciones con React.&lt;br /&gt;
&lt;h2 id="1-para-qu-sirve-usestate-"&gt;
1. Para qué sirve useState()&lt;/h2&gt;
useState() es la forma de utilizar el estado en componentes basados en funciones. Si nosotros estamos desarrollando nuestros componentes con clases tenemos algo como lo siguiente:&lt;br /&gt;
&lt;pre&gt;&lt;code class="lang-jsx"&gt;&lt;span class="hljs-class"&gt;&lt;span class="hljs-keyword"&gt;class&lt;/span&gt; &lt;span class="hljs-title"&gt;MiComponente&lt;/span&gt; &lt;span class="hljs-keyword"&gt;extends&lt;/span&gt; &lt;span class="hljs-title"&gt;React&lt;/span&gt;.&lt;span class="hljs-title"&gt;Component&lt;/span&gt;&lt;/span&gt;{

    constructor(props){
        &lt;span class="hljs-keyword"&gt;super&lt;/span&gt;(props);
        &lt;span class="hljs-keyword"&gt;this&lt;/span&gt;.state = {nombre: ''};
    }

    handleChange = e =&amp;gt;{
        &lt;span class="hljs-keyword"&gt;this&lt;/span&gt;.setState({nombre: e.target.value});
    }

    render(){
        &lt;span class="hljs-keyword"&gt;return&lt;/span&gt;(
            &amp;lt;input onChange={&lt;span class="hljs-keyword"&gt;this&lt;/span&gt;.handleChange()} value={&lt;span class="hljs-keyword"&gt;this&lt;/span&gt;.state.nombre} /&amp;gt;
        );
    }
}
&lt;/code&gt;&lt;/pre&gt;
Cuando usamos clases tenemos que usar &lt;code&gt;this.state&lt;/code&gt; y &lt;code&gt;this.setState()&lt;/code&gt; para poder manipular los datos en nuestro componente. Si lo queremos ver así es un getter y un setter. Sin embargo, para hacer lo mismo en un componente basado en función necesitamos hacer uso de el hook de estado.&lt;br /&gt;
&lt;h2 id="2-c-mo-funciona-el-hook-de-estado-"&gt;
2. ¿Cómo funciona el hook de estado?&lt;/h2&gt;
El mismo ejemplo anterior hecho con clase podemos hacerlo con funciones de la siguiente forma:&lt;br /&gt;
&lt;pre&gt;&lt;code class="lang-jsx"&gt;&lt;span class="hljs-keyword"&gt;import&lt;/span&gt; {React, useState} &lt;span class="hljs-keyword"&gt;from&lt;/span&gt; &lt;span class="hljs-string"&gt;'react'&lt;/span&gt;;

&lt;span class="hljs-function"&gt;&lt;span class="hljs-keyword"&gt;function&lt;/span&gt; &lt;span class="hljs-title"&gt;MiComponente&lt;/span&gt;(&lt;span class="hljs-params"&gt;props&lt;/span&gt;)&lt;/span&gt;{
    &lt;span class="hljs-keyword"&gt;const&lt;/span&gt; [nombre, setNombre] = useState(&lt;span class="hljs-string"&gt;''&lt;/span&gt;);

    &lt;span class="hljs-function"&gt;&lt;span class="hljs-keyword"&gt;function&lt;/span&gt; &lt;span class="hljs-title"&gt;handleChange&lt;/span&gt;(&lt;span class="hljs-params"&gt;e&lt;/span&gt;)&lt;/span&gt;{
        setNombre(e.target.value);
    }

    &lt;span class="hljs-keyword"&gt;return&lt;/span&gt;(
        &lt;span class="xml"&gt;&lt;span class="hljs-tag"&gt;&amp;lt;&lt;span class="hljs-name"&gt;input&lt;/span&gt; &lt;span class="hljs-attr"&gt;onChange&lt;/span&gt;=&lt;span class="hljs-string"&gt;{handleChange()}&lt;/span&gt; &lt;span class="hljs-attr"&gt;value&lt;/span&gt;=&lt;span class="hljs-string"&gt;{nombre}&lt;/span&gt; /&amp;gt;&lt;/span&gt;
    );
}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;code&gt;useState()&lt;/code&gt; lo que nos permite hacer es hacer una desestructuración de una variable y una función. en nuestro caso la variable o estado que definimos es &lt;code&gt;nombre&lt;/code&gt; y por lo tanto el siguiente parámetro es una función &lt;code&gt;setNombre()&lt;/code&gt; para poder cambiar el valor de &lt;code&gt;nombre&lt;/code&gt;. De la misma forma que cuando usamos clases tenemos que usar la función &lt;code&gt;setState()&lt;/code&gt; para poder modificar el valor de nuestro estado, cuando usamos funciones usamos la función que definimos en la desestructuración para hacer dicho cambio.&lt;br /&gt;
&lt;h2 id="3-se-pueden-declarar-m-s-variables-usando-usestate-"&gt;
3. ¿Se pueden declarar más variables usando useState()?&lt;/h2&gt;
La respuesta es que sí. A diferencia de cuando usamos &lt;code&gt;state&lt;/code&gt; y &lt;code&gt;setState()&lt;/code&gt; para almacenar todos los estados de nuestos datos, usando &lt;code&gt;useState()&lt;/code&gt; nos permite definir variables de forma independiente, lo cual puede ocasionar una forma más ágil de manipular los estados de los datos al tener una referencia mucho más visual de qué dato estás modificando con el nombre de la función.&lt;br /&gt;
&lt;h2 id="conclusiones"&gt;
Conclusiones&lt;/h2&gt;
Así funciona el hook de estado. Si ven la diferencia en realidad no hay ninguna, más que el mismo hecho de tener una variable y función para sustituir el &lt;code&gt;state&lt;/code&gt; y &lt;code&gt;setState&lt;/code&gt; que ocupamos cuando lo hacemos con componentes basados en clases.&lt;br /&gt;
&lt;h2 id="bonus"&gt;
Bonus&lt;/h2&gt;
También pueden ver en este video la explicación del hook de estado en React.js y aprovechar para suscribirse a mi canal si no lo han hecho &#128522;&lt;br /&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/wjcJ245--So/0.jpg" src="https://www.youtube.com/embed/wjcJ245--So?feature=player_embedded" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-bFErYEjXmR0/XqIFb5ChZZI/AAAAAAAAvSA/rxAJ4sWBPT4Lxmw7AyQMi3gTR5u4XNVXgCLcBGAsYHQ/s72-c/usestate-react-js.jpg" width="72"/></item><item><title>32 consejos para web developers</title><link>http://www.vidamrr.com/2020/01/32-consejos-para-web-developers.html</link><category>consejos</category><category>Videos</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Tue, 14 Jan 2020 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-3558994453247462319</guid><description>&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://1.bp.blogspot.com/-d-PjZ820mbA/Xhy5rxCi_5I/AAAAAAAAnRc/_RYOlh1QViABmDZ67yF-NFTACfKxhbpsgCLcBGAsYHQ/s640/32%2Bconsejos%2Bpara%2Bdevelopers.jpg" width="640" /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
¿Qué consejo le darías a un desarrollador web? seguramente si tienes ya un poco de experiencia sabrás que hoy en día un developer no solo debe centrarse en el tema del código como tal, hay varias habilidades adicionales que se necesitan para tener en cuenta que un desarrollador web tiene un perfil más completo.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
En este video les comparto &lt;b&gt;32 consejos para web developers&lt;/b&gt;, consejos muy rápidos y sencillos de seguir si tu ruta de carrera conlleva tener un puesto de este tipo, pues temas de colaboración, de apoyo a la comunidad, de tener presencia en internet y de estar constantemente actualizándose con las nuevas tecnologías son temas importantes que necesitas cumplir para tener un perfil completo.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/oqsA3boY82k" width="560"&gt;&lt;/iframe&gt;&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-d-PjZ820mbA/Xhy5rxCi_5I/AAAAAAAAnRc/_RYOlh1QViABmDZ67yF-NFTACfKxhbpsgCLcBGAsYHQ/s72-c/32%2Bconsejos%2Bpara%2Bdevelopers.jpg" width="72"/></item><item><title>10 ejemplos de diseños web enfocados a la música</title><link>http://www.vidamrr.com/2020/01/10-ejemplos-de-disenos-web-enfocados-la.html</link><category>diseño</category><category>plantillas</category><category>sitios web</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 13 Jan 2020 12:34:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-1597106977215953798</guid><description>&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-krW7P82_yNs/Xhy254xJQrI/AAAAAAAAnQ0/jMxkpXEvx-UMP09ha8VexLhskHBfuhBiQCLcBGAsYHQ/s1600/musica-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="481" data-original-width="1000" height="305" src="https://1.bp.blogspot.com/-krW7P82_yNs/Xhy254xJQrI/AAAAAAAAnQ0/jMxkpXEvx-UMP09ha8VexLhskHBfuhBiQCLcBGAsYHQ/s640/musica-08.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
Hace tiempo que no comparto diseños de sitios web. En esta ocasión les comparto una galería de diseños de sitios web con estilo enfocado a la música. Muchos de estos sitios obviamente tienen que ver con artistas o la fuente hace referencia mucho al tipo de música que vas a encontrar. Sitios que se enfocan en colecciones de música o servicios de streaming están enfocados en dar a conocer los éxitos más populares alrededor del mundo, por lo que son varios los tips que pueden tomar como referencia si su próximo proyecto va a ir enfocado a la música.&lt;/div&gt;
&lt;div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/snakepit-a-rock-and-metal-oriented-music-wordpress-theme/23418267?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;1. Snakepit:&lt;/a&gt;&lt;/h2&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-U012u3r7f_Y/Xhy23l_kSrI/AAAAAAAAnQg/msQox1AFLh0f9ZDkJPko2bm4mppuojMXACLcBGAsYHQ/s1600/musica-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="485" data-original-width="1000" height="307" src="https://1.bp.blogspot.com/-U012u3r7f_Y/Xhy23l_kSrI/AAAAAAAAnQg/msQox1AFLh0f9ZDkJPko2bm4mppuojMXACLcBGAsYHQ/s640/musica-01.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/slide-music-wordpress-theme/21680152?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;2. Slide:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-OlpvEhcmVoA/Xhy23YDTeZI/AAAAAAAAnQc/OxNuazaGV10CSGStQOmm5yzuJgtxgBcCgCLcBGAsYHQ/s1600/musica-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="462" data-original-width="1000" height="292" src="https://1.bp.blogspot.com/-OlpvEhcmVoA/Xhy23YDTeZI/AAAAAAAAnQc/OxNuazaGV10CSGStQOmm5yzuJgtxgBcCgCLcBGAsYHQ/s640/musica-02.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/mixtape-a-fresh-music-theme-for-artists-bands-and-festivals/19984384?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;3. Mixtape:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-p68_vqr1zqg/Xhy23TTe2AI/AAAAAAAAnQY/MkKhY3qR4KA04PwPhh7PZlB3MyFG7esYwCLcBGAsYHQ/s1600/musica-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="483" data-original-width="1000" height="307" src="https://1.bp.blogspot.com/-p68_vqr1zqg/Xhy23TTe2AI/AAAAAAAAnQY/MkKhY3qR4KA04PwPhh7PZlB3MyFG7esYwCLcBGAsYHQ/s640/musica-03.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/milando-music-portal-html-template/21781034?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;4. Milando:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-wXYyss1V2gA/Xhy236xRhOI/AAAAAAAAnQk/p5LnKLgEkSU1kvzeCbDVQeu0ArhSj95PACLcBGAsYHQ/s1600/musica-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="486" data-original-width="1000" height="308" src="https://1.bp.blogspot.com/-wXYyss1V2gA/Xhy236xRhOI/AAAAAAAAnQk/p5LnKLgEkSU1kvzeCbDVQeu0ArhSj95PACLcBGAsYHQ/s640/musica-04.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/beatswave-creative-music-template/22620047?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;5. BeatsWave:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-xkBBZS08wYw/Xhy24OEr4-I/AAAAAAAAnQo/3SMYnnWz7Dw424uag8_UX1anfIbmpUQhgCLcBGAsYHQ/s1600/musica-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="489" data-original-width="1000" height="312" src="https://1.bp.blogspot.com/-xkBBZS08wYw/Xhy24OEr4-I/AAAAAAAAnQo/3SMYnnWz7Dw424uag8_UX1anfIbmpUQhgCLcBGAsYHQ/s640/musica-05.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/soundflare-hifi-audio-repair-service-landing-page-html5-template/21285766?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;6. SoundFlare:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-qXJXHoztIAw/Xhy24qhEgTI/AAAAAAAAnQs/5UZ7nvdacMs-I-qxNx8RqL5G7TfxWDD-QCLcBGAsYHQ/s1600/musica-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="486" data-original-width="1000" height="308" src="https://1.bp.blogspot.com/-qXJXHoztIAw/Xhy24qhEgTI/AAAAAAAAnQs/5UZ7nvdacMs-I-qxNx8RqL5G7TfxWDD-QCLcBGAsYHQ/s640/musica-06.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/bepop-nonstop-music-wordpress-theme/24075935?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;7. Bepop:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-ZGCM5LCCZAI/Xhy25f_XYoI/AAAAAAAAnQw/VCX6lKnGlV8TDnxfknW5RUC9KzwVRqNeQCLcBGAsYHQ/s1600/musica-07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="486" data-original-width="1000" height="308" src="https://1.bp.blogspot.com/-ZGCM5LCCZAI/Xhy25f_XYoI/AAAAAAAAnQw/VCX6lKnGlV8TDnxfknW5RUC9KzwVRqNeQCLcBGAsYHQ/s640/musica-07.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/mousiqua-music-band-and-musician-template/21699925?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;8. Mousiqua:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-tmBu2lVBOEU/Xhy26aSugKI/AAAAAAAAnQ4/IkG0GNiGPYgW1uUMWvIsexDADqMyqMg7gCLcBGAsYHQ/s1600/musica-09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="489" data-original-width="1000" height="312" src="https://1.bp.blogspot.com/-tmBu2lVBOEU/Xhy26aSugKI/AAAAAAAAnQ4/IkG0GNiGPYgW1uUMWvIsexDADqMyqMg7gCLcBGAsYHQ/s640/musica-09.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/bridge-creative-multipurpose-wordpress-theme/7315054?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;9. Bridge:&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-6xH8qTVjuvg/Xhy264rmxmI/AAAAAAAAnQ8/2uquooX7bfEdmKKV6tKBxaGrZEfYhScigCLcBGAsYHQ/s1600/musica-10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="485" data-original-width="1000" height="307" src="https://1.bp.blogspot.com/-6xH8qTVjuvg/Xhy264rmxmI/AAAAAAAAnQ8/2uquooX7bfEdmKKV6tKBxaGrZEfYhScigCLcBGAsYHQ/s640/musica-10.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;h2 style="background-color: white; box-sizing: border-box; font-family: Roboto, sans-serif; font-size: 20px; margin: 0px 0px 10px; padding: 10px 0px 0px;"&gt;
&lt;a href="https://themeforest.net/item/kentha-visionary-music-wordpress-theme/21148850?ref=webdesigndev" style="box-sizing: border-box; color: #f8800c; margin: 0px; outline: 0px; padding: 0px; text-decoration-line: none;" target="_blank"&gt;10. Kentha:&lt;/a&gt;&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-krW7P82_yNs/Xhy254xJQrI/AAAAAAAAnQ0/jMxkpXEvx-UMP09ha8VexLhskHBfuhBiQCLcBGAsYHQ/s1600/musica-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="481" data-original-width="1000" height="305" src="https://1.bp.blogspot.com/-krW7P82_yNs/Xhy254xJQrI/AAAAAAAAnQ0/jMxkpXEvx-UMP09ha8VexLhskHBfuhBiQCLcBGAsYHQ/s640/musica-08.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-krW7P82_yNs/Xhy254xJQrI/AAAAAAAAnQ0/jMxkpXEvx-UMP09ha8VexLhskHBfuhBiQCLcBGAsYHQ/s72-c/musica-08.jpg" width="72"/></item><item><title>Qué es CORS y cómo usarlo en Node.js</title><link>http://www.vidamrr.com/2020/01/que-es-cors-y-como-usarlo-en-nodejs.html</link><category>nodejs</category><category>tutoriales</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 6 Jan 2020 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-3242157684102627202</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://1.bp.blogspot.com/-4e5XOFYl8Uk/XhI6TEUNpkI/AAAAAAAAnDQ/75kGl9SocVUDcvrRE79Z5GwGXG0xFQ7awCLcBGAsYHQ/s1600/CORS_principle.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Qué es CORS y cómo usarlo en Node.js" border="0" data-original-height="643" data-original-width="925" src="https://1.bp.blogspot.com/-4e5XOFYl8Uk/XhI6TEUNpkI/AAAAAAAAnDQ/75kGl9SocVUDcvrRE79Z5GwGXG0xFQ7awCLcBGAsYHQ/s1600/CORS_principle.png" title="Qué es CORS y cómo usarlo en Node.js" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
CORS significa Cross-Origin Resource Sharing, y es una política a nivel de navegador web que se aplica para prevenir que el dominio A evite acceder a recursos del dominio B usando solicitudes del tipo AJAX como cuando usamos &lt;code&gt;fetch()&lt;/code&gt; o &lt;code&gt;XMLHttpRequest&lt;/code&gt;.&lt;br /&gt;
Un ejemplo básico de este comportamiento es cuando creas un archivo html y tratas de hacer una llamada AJAX a cualquier sitio en internet o servidor en tu equipo o red local. Vas a obtener un error como el siguiente:&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://1.bp.blogspot.com/-XMoVr7Bnnls/XhI58Z8T8DI/AAAAAAAAnDI/EHPFNESgii4_2HmeMB0P729yxISbaWbmQCLcBGAsYHQ/s1600/font-origin-blocked.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Qué es CORS y cómo usarlo en Node.js" border="0" data-original-height="180" data-original-width="670" height="170" src="https://1.bp.blogspot.com/-XMoVr7Bnnls/XhI58Z8T8DI/AAAAAAAAnDI/EHPFNESgii4_2HmeMB0P729yxISbaWbmQCLcBGAsYHQ/s640/font-origin-blocked.png" title="Qué es CORS y cómo usarlo en Node.js" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
Puedes encontrar toda la información detallada en el &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS"&gt;sitio de Mozilla&lt;/a&gt; pero en este tutorial vamos a ver cómo manejar este comportamiento con Node.js&lt;br /&gt;
&lt;br /&gt;
Lo primero que necesitamos saber es que si tenemos dos dominios: posco.com y contaro.com en principio no pueden comunicarse. Si nosotros queremos que por ejemplo contaro.com pueda permitir a otros dominios acceder a sus recursos, podemos hacerlo a través del módulo de cors. Lo primero es instalarlo&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$ npm &lt;span class="hljs-keyword"&gt;install&lt;/span&gt; cors
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
Después, vamos a incluirlo en nuestro archivo de Node.js&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; express = &lt;span class="hljs-built_in"&gt;require&lt;/span&gt;(&lt;span class="hljs-string"&gt;'express'&lt;/span&gt;)
&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; cors = &lt;span class="hljs-built_in"&gt;require&lt;/span&gt;(&lt;span class="hljs-string"&gt;'cors'&lt;/span&gt;)
&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; app = express()

app.use(cors())

app.get(&lt;span class="hljs-string"&gt;'/products/:id'&lt;/span&gt;, &lt;span class="hljs-function"&gt;&lt;span class="hljs-keyword"&gt;function&lt;/span&gt; (&lt;span class="hljs-params"&gt;req, res, next&lt;/span&gt;) &lt;/span&gt;{
  res.json({&lt;span class="hljs-attr"&gt;msg&lt;/span&gt;: &lt;span class="hljs-string"&gt;'This is CORS-enabled for all origins!'&lt;/span&gt;})
})

app.listen(&lt;span class="hljs-number"&gt;80&lt;/span&gt;, &lt;span class="hljs-function"&gt;&lt;span class="hljs-keyword"&gt;function&lt;/span&gt; (&lt;span class="hljs-params"&gt;&lt;/span&gt;) &lt;/span&gt;{
  &lt;span class="hljs-built_in"&gt;console&lt;/span&gt;.log(&lt;span class="hljs-string"&gt;'CORS-enabled web server listening on port 80'&lt;/span&gt;)
})
&lt;/code&gt;&lt;/pre&gt;Con esto ya estamos permitiendo a nuestro dominio recibir solicitudes de otros dominios. Pero si queremos limitar solo a ciertos dominios de acceder a nuestros recursos podemos igual hacerlo a través de una lista blanca, en donde definimos los dominios y validamos que cada que haya una solicitud a una ruta específica se ejecute ese procedimiento de confirmación para aprobar o descargar el dominio.&lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; whitelist = [&lt;span class="hljs-string"&gt;'http://example1.com'&lt;/span&gt;, &lt;span class="hljs-string"&gt;'http://example2.com'&lt;/span&gt;]
&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; corsOptions = {
  origin: &lt;span class="hljs-type"&gt;function &lt;/span&gt;(origin, &lt;span class="hljs-keyword"&gt;callback&lt;/span&gt;) {
    &lt;span class="hljs-keyword"&gt;if&lt;/span&gt; (whitelist.indexOf(origin) !== &lt;span class="hljs-number"&gt;-1&lt;/span&gt;) {
      &lt;span class="hljs-keyword"&gt;callback&lt;/span&gt;(&lt;span class="hljs-literal"&gt;null&lt;/span&gt;, &lt;span class="hljs-literal"&gt;true&lt;/span&gt;)
    } &lt;span class="hljs-keyword"&gt;else&lt;/span&gt; {
      &lt;span class="hljs-keyword"&gt;callback&lt;/span&gt;(&lt;span class="hljs-keyword"&gt;new&lt;/span&gt; &lt;span class="hljs-type"&gt;Error&lt;/span&gt;(&lt;span class="hljs-string"&gt;'Not allowed by CORS'&lt;/span&gt;))
    }
  }
}

...

app.&lt;span class="hljs-keyword"&gt;get&lt;/span&gt;(&lt;span class="hljs-string"&gt;'/products/:id'&lt;/span&gt;, cors(corsOptions), &lt;span class="hljs-function"&gt;&lt;span class="hljs-keyword"&gt;function&lt;/span&gt; &lt;/span&gt;(req, res, next) {
  res.json({msg: &lt;span class="hljs-type"&gt;&lt;/span&gt;'This is CORS-enabled &lt;span class="hljs-keyword"&gt;for&lt;/span&gt; a whitelisted domain.&lt;span class="hljs-string"&gt;'})
})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;De esa forma podemos controlar de forma más granular quién puede o no acceder a nuestros recursos como una API sin tener que hacer otro esfuerzo adicional al momento de configurar nuestras aplicaciones web.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-4e5XOFYl8Uk/XhI6TEUNpkI/AAAAAAAAnDQ/75kGl9SocVUDcvrRE79Z5GwGXG0xFQ7awCLcBGAsYHQ/s72-c/CORS_principle.png" width="72"/></item><item><title>Ideas para crear aplicaciones en 2020</title><link>http://www.vidamrr.com/2019/11/ideas-para-crear-aplicaciones-en-2020.html</link><category>apps</category><category>consejos</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 18 Nov 2019 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-1100393416128764129</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-Gx2vYWgmTR0/XdGccTbjpZI/AAAAAAAAm30/OY2SvoIPgMYEwp63vcu4C09_GNRFPCcgQCLcBGAsYHQ/s1600/mobile-apps-pile-ss-1920.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Ideas para crear aplicaciones en 2020" border="0" data-original-height="900" data-original-width="1600" height="360" src="https://1.bp.blogspot.com/-Gx2vYWgmTR0/XdGccTbjpZI/AAAAAAAAm30/OY2SvoIPgMYEwp63vcu4C09_GNRFPCcgQCLcBGAsYHQ/s640/mobile-apps-pile-ss-1920.jpg" title="Ideas para crear aplicaciones en 2020" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Se acerca el fin del año 2019 y con ello la oportunidad de planear la próxima aplicación móvil para tu empresa, para tu negocio propio, o como parte de iniciativas para seguir aprendiendo. En este post les comparto algunas ideas de apps móviles que de acuerdo a las últimas tendencias en torno a desarrollo deberías aprender y/o implementar en 2020.&lt;br /&gt;
&lt;h2 id="apps-m-viles-enfocas-a-vr"&gt;
Apps móviles enfocas a VR&lt;/h2&gt;
Las aplicaciones con virtual reality o realidad virtual son aquellas en donde con el uso de gafas o dispositivos inmersivos puedes ofrecer una experiencia 360 grados. Hoy en día para dispositivos Android hay muchas gafas de realidad virtual que no son necesariamente caras y que puedes usarlas para probar tus aplicaciones. Principalmente esta tecnología se ha usado para construir juegos que permitan tener esa nueva experiencia interactiva donde recreas un entorno virtual completo.&lt;br /&gt;
&lt;h2 id="apps-con-bots"&gt;
Apps con bots&lt;/h2&gt;
Los bots se volvieron un boom el año pasado y su uso se empezó a expandir desde entonces. Los bots como una herramienta de comunicación pueden ayudar mucho si por ejemplo, eres un negocio que desea tener para sus usuarios un apoyo constante de comunicación, sin necesariamente tener a una persona escribiendo los mensajes.&lt;br /&gt;
Lo que me gusta de los bots es que puedes hacerlo tan inteligente como tu lo necesites, desde que solo tengas que seguir un flujo de comunicación seleccionando opciones, hasta que puedas entablar diálogos más complejos en voz o texto.&lt;br /&gt;
&lt;h2 id="apps-para-el-cuidado-de-la-salud"&gt;
Apps para el cuidado de la salud&lt;/h2&gt;
Las aplicaciones para medir el pulso, los pasos y distancia son hoy en día muy fáciles de construir. La mayoría de los smartphones modernos ya tienen incluidos algunos sensores que pueden ayudarte a monitorear diferentes aspectos del cuerpo, y si lo añades con las funcionalidades de un smartwatch el resultado puede ser mucho más interesante.&lt;br /&gt;
Todas las apps enfocadas a salud tienen como objetivo que puedas activarte físicamente con recordatorios, juegos o metas para incentivarte de una forma divertida, por lo que para tener un diferenciador es necesario hacerlo lo más amigable y llamativo posible.&lt;br /&gt;
&lt;h2 id="apps-con-blockchain"&gt;
Apps con blockchain&lt;/h2&gt;
Esta tecnología si bien empezó como una forma inteligente y segura para poder usar cripto monedas, hoy en día muchos proveedores hacen uso de esta tecnología para que tu puedas crear servicios y aplicaciones en donde la integridad de la información se mantenga a pesar de los cambios futuros que tenga. Si necesitas que los datos no se modifiquen o que no haya duplicidad en los mismos, la tecnología de blockchain puede ayudar perfecto a cumplir con esa premisa, y hoy ya es relativamente más fácil construir desarrollos sobre ella.&lt;br /&gt;
&lt;h2 id="apps-realidad-aumentada"&gt;
Apps Realidad aumentada&lt;/h2&gt;
Una simple aplicación de realidad aumentada que puedes ir haciendo es la del metro como instrumento de medida. Este ejemplo hace referencia a cómo integras elementos a un entorno físico para realizar alguna actividad. Muchos utilizan la realidad aumentada para juegos, pero así como el ejemplo del metro, podrías constuir apps enfocadas a brindar una herramienta que te ayude a combinar objetos físicos con virtuales.&lt;br /&gt;
&lt;h2 id="conclusi-n"&gt;
Conclusión&lt;/h2&gt;
Estas son 5 tendencias que esperamos ver en 2020 enfocadas al desarrollo de aplicaciones móviles. Cada una representa sus retos y oportunidades, pero lo cierto es que hace un año que algunas de ellas apenas estaban siendo presentadas, era muy difícil poder construir aplicaciones reales, ya que teníamos falta de hardware o software en forma de SDKs que nos permitieran explotar estas tecnologías. En estos momentos que estamos por concluir el 2019 podemos confirmar que ya mucha de la tecnología para hacer estas apps no solo existe en tu teléfono, sino que ya hay muchísimas formas de aplicarlas para tener una app diferente con una interacción y tecnología moderna.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-Gx2vYWgmTR0/XdGccTbjpZI/AAAAAAAAm30/OY2SvoIPgMYEwp63vcu4C09_GNRFPCcgQCLcBGAsYHQ/s72-c/mobile-apps-pile-ss-1920.jpg" width="72"/></item><item><title>10 principios básicos de diseño </title><link>http://www.vidamrr.com/2019/10/10-principios-basicos-de-diseno.html</link><category>consejos</category><category>diseño</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Tue, 8 Oct 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-2635056462270452799</guid><description>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://1.bp.blogspot.com/-0eY4B7y8yzE/XZvrzWLKDtI/AAAAAAAAmas/L48x_EFJ9XEuhxdoOr5PtTwqfKS1XS0nACLcBGAsYHQ/s1600/principios-diseno.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="10 principios básicos de diseño " border="0" data-original-height="500" data-original-width="370" height="320" src="https://1.bp.blogspot.com/-0eY4B7y8yzE/XZvrzWLKDtI/AAAAAAAAmas/L48x_EFJ9XEuhxdoOr5PtTwqfKS1XS0nACLcBGAsYHQ/s320/principios-diseno.png" title="10 principios básicos de diseño " width="236" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;Hace tiempo que no hablamos de diseño. En este post les voy a platicar sobre 10 principios básicos que todo diseño debe tener, independientemente de donde lo veamos, creemos o imprimamos, estos &lt;b&gt;10 principios deben estar siempre visibles&lt;/b&gt; y saber representarse en una obra como dibujo, interfaz web, diseño web, etc. Así que comencemos &#128077;&#127996;&lt;br /&gt;
&lt;h2 id="1-balance"&gt;
1. Balance&lt;/h2&gt;
El balance se entiende como la armonía de elementos, tanto gráficos como de fuentes, colores, ilustraciones, etc. Incluso un diseño super saturado puede tener balance. Incluso el diseño más minimalista y sobrio puede tener balance, y eso depende de qué tan bien acomodamos los elementos, para que exista armonía y estructura.&lt;br /&gt;
No significa que todos los elementos deban estar alineados o milimétricamente separados por la misma distancia, sino que a simple vista no piensen que a un diseño le faltó color, o algún elemento para rellenar, o que hay un espacio de más que no encaja.&lt;br /&gt;
&lt;h2 id="2-proximidad"&gt;
2. Proximidad&lt;/h2&gt;
La proximidad ayuda a crear relación entre elementos de un diseño. No se vería bien tener un campo de búsqueda en un extremo de la pantalla y el botón para buscar al otro lado, porque no tendrían proximidad. &lt;br /&gt;
Ese ejemplo básico sirve para ejemplificar que los elementos en un diseño deben estar juntos y separados dependiendo del significado y la intención que queremos dar. Ni todo super junto, ni todo separado si no existe un significado que explique por qué tiene que ser así.&lt;br /&gt;
&lt;h2 id="3-alineaci-n"&gt;
3. Alineación&lt;/h2&gt;
Muchos diseñadores que empiezan creen que por alineación tiene que ser todo al centro o distribuido, como si pusieras tus elementos en una caja donde no pueden salir, y no hay nada más erróneo que eso. Alineación significa orden y se combina con proximidad. Hay elementos que en conjunto dan un significado y necesitan una alineación, y hay otros que no. &lt;br /&gt;
Un ejemplo de esto es cuando en una aplicación tenemos un menú lateral. Los elementos que están relacionados estarán alineados y agrupados; aquellos que no tendrán otra alineación, posición y distribución, y no necesariamente tienen que estar desalineados.&lt;br /&gt;
&lt;h2 id="4-jerarqu-a-visual"&gt;
4. Jerarquía visual&lt;/h2&gt;
Este es uno de los elementos más importantes, ya que permite a los usuarios dirigir la mirada en lo más importante primero, y en lo secundario al final. La jerarquía implica que usen fuentes más grandes en los textos que quieres resaltar, imágenes más llamativas en donde la imagen es la principal, y todos los demás elementos como secundarios, pequeños, no tan llamativos y que aún así complemente tu diseño.&lt;br /&gt;
&lt;h2 id="5-repetici-n"&gt;
5. Repetición&lt;/h2&gt;
¿Alguna vez han visto que empiezan a definir estilos CSS para ciertos campos y al final terminando aplicando otros? este es un problema de repetición, ya que sin un estilo de colores a lo largo de un proyecto se pierde el sentido de marca.&lt;br /&gt;
Usar la misma paleta de colores en todo el diseño, o en un sitio web es primordial para mantener consistencia, de tal forma que ese botón azul con borde redondeado lo identifiques en todas las páginas de tu sitio, y no te confundas con otro que tiene otra forma y color.&lt;br /&gt;
&lt;h2 id="6-contraste"&gt;
6. Contraste&lt;/h2&gt;
Hemos hablado mucho del contraste en el blog. Sin contraste no sabríamos diferenciar elementos del fondo, texto como cabecera de texto de párrafo, o de ilustraciones entre sí. Siempre recuerda tener contraste, no solo a nivel de blanco-negro, sino de diferentes colores, formas y fuentes que permita que no exista un resalte, una duda o una interpretación que implique gastar la vista.&lt;br /&gt;
&lt;h2 id="7-color"&gt;
7. Color&lt;/h2&gt;
En colores hay toda una ciencia de cómo escoger una gama de colores. No es tema de este post pero los puntos importantes son:&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;no uses más de dos o tres colores para un diseño&lt;/li&gt;
&lt;li&gt;usa tonos de grises&lt;/li&gt;
&lt;li&gt;usa una paleta de colores usando alguna aplicación de combinación de colores&lt;/li&gt;
&lt;li&gt;trata de ver combinaciones nuevas, no uses siempre las mismas&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="8-espacio-negativo"&gt;
8. Espacio negativo&lt;/h2&gt;
El espacio negativo se usa cuando jugamos con las siluetas de otros elementos para crear más elementos. No es un recurso que deberíamos explotar demasiado pero sí lo suficiente para que el usuario se sorprenda al identificar por sí mismo la figura escondida&lt;br /&gt;
&lt;h2 id="9-tipograf-a"&gt;
9. Tipografía&lt;/h2&gt;
La tipografía es super importante para cada diseño, y por lo tanto necesita una tipografía específica para ello. Evitemos usar las que vienen por defecto en nuestra computadora. Las fuentes que puedes encontrar en internet de forma gratuita son ideales para crear textos llamativos pero no muy originales, y las que tienes que pagar son las que son perfectas para crear toda una colección e identidad para el diseño.&lt;br /&gt;
&lt;h2 id="10-estilo-propio"&gt;
10. Estilo propio&lt;/h2&gt;
Ya que conoces todos estos principios, entonces ya puedes buscar tu propio estilo, combinando, creando y ajustando todos los principios anteriores a algo que siga manteniendo un diseño bueno. El estilo propio es lo que eventualmente muchos lanzan como lenguaje de diseño, estilos, temas, y todo lo que puedas relacionar a nivel de diseño para un sitio, aplicación, campaña de publicidad, y muchas cosas más.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-0eY4B7y8yzE/XZvrzWLKDtI/AAAAAAAAmas/L48x_EFJ9XEuhxdoOr5PtTwqfKS1XS0nACLcBGAsYHQ/s72-c/principios-diseno.png" width="72"/></item><item><title>Consejos para ser un mejor desarrollador</title><link>http://www.vidamrr.com/2019/09/consejos-para-ser-un-mejor-desarrollador.html</link><category>consejos</category><category>developers</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 16 Sep 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-8995796785486053608</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-KNASNGYpLsQ/XX6dZkcFN3I/AAAAAAAAmOw/9YQoAKDDY2EJHbABvYVtzh_Fb8mrpKUFQCLcBGAsYHQ/s1600/como-ser-mejor-desarrollador.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Consejos para ser un mejor desarrollador" border="0" data-original-height="560" data-original-width="900" height="398" src="https://1.bp.blogspot.com/-KNASNGYpLsQ/XX6dZkcFN3I/AAAAAAAAmOw/9YQoAKDDY2EJHbABvYVtzh_Fb8mrpKUFQCLcBGAsYHQ/s640/como-ser-mejor-desarrollador.jpg" title="Consejos para ser un mejor desarrollador" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Cuando se trata de programación no hay una forma o estándar a seguir para poder desarrollarse y madurar. Solo la experiencia te da más herramientas dentro de este mundo de programación, pero también hay actividades que puedes realizar para poder ir ganando más experiencia y seguir mejorando como desarrollador, y en este post te los voy a compartir.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="experimentarenvariosproyectos"&gt;
Experimentar en varios proyectos&lt;/h2&gt;
&lt;br /&gt;
Puede sonar lógico que para poder ser un mejor desarrollador lo primero que tienes que ahcer s practicar, desarrollar proyectos,  estar involucrado en varios, de tal forma que en cada uno aprendas algo diferente. Sin embargo aquí hay algunos puntos que deberías estar teniendo en cuenta al momento de tener proyectos para poder ser un mejor desarrollador&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Tienes que fallar para aprender: el terminar un proyecto sencillo no te da ningún aprendizaje. Aprende con el error y sabiendo tus capacidades técnicas&lt;/li&gt;
&lt;li&gt;Aprender significa tener creatividad: programar de la misma forma y haciendo las mismas aplicaciones no te dejan ninguna experiencia. Juega a hacer las cosas de diferentes formas para saber si lo que actualmente haces es la forma más adecuada o hay alguna mejor.&lt;/li&gt;
&lt;li&gt;Aplica los métodos paso a paso: ¿cuándo fue la última vez que seguiste todo un ciclo de desarrollo para una aplicación? cosas tan sencillas como esas las obviamos y nos vamos directo a programar y ver en el camino qué nos falta. Intenta ir lento, siguiendo la teoría, y verás que de la misma forma que buscas soluciones a tu código, vas a querer soluciones a situiaciones en las etapas.&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h2 id="planeaantesdeprogramar"&gt;
Planea antes de programar&lt;/h2&gt;
&lt;br /&gt;
Como lo mencionaba anteriormente, solemos emepezar a programar sin siqueira estar seguros de lo que queremos lograr. La planeación es una etapa en la que tienes que poner bien los alcances de lo que vas a hacer, y el resultado que quieres obtener. Si solo empiezas a programar no vas a saber cuándo terminar, o al final no vas a recordar por qué empezaste ese prioyecto.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="sdurocontucdigo"&gt;
Sé duro con tu código&lt;/h2&gt;
&lt;br /&gt;
La mejor forma para mejorar como programador o desarrollador es siempre ser auto críticos con nuestro código. Si le presentaras tu código a algún desarrollador experto o con muchos años de experiencia, reconocido entre una comunidad ¿qué crees que diría de él? ¿qué es código de calidad? ¿o que es código de principiantes?&lt;br /&gt;
Siempre debemos buscar los patrones o mejores prácticas para nuestro código. Hay muchas metodologías y dependiendo del lenguaje irás aprendiendo si la técnica de programación que tienes es buena o mala, y a partir de ahí ver cómo la puedes mejorar.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="leecdigodedesarrolladoresrespetados"&gt;
Lee código de desarrolladores respetados&lt;/h2&gt;
&lt;br /&gt;
Es un punto adicional a  lo que comentaba anteriormente. No hay nada mejor que ponerte al tú por tú contra un desarrollador que sea realmente bueno. Basta incluso con ver las librerías de organizaciones o comunidades Open Source y ver si entendemos el código que muestran, y después, validar si nuestro código es de la misma calidad.&lt;br /&gt;
En Github puedes encontrar desarrolladores que postean sus proyectos personales o de colaboración con otros, y medirte para ver qué tan bueno eres comparado con ellos.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="aprendeadebuggearcdigoquenoestuyo"&gt;
Aprende a 'debuggear' código que no es tuyo&lt;/h2&gt;
&lt;br /&gt;
Si trabajas para una empresa que desarrolla proyectos a clientes esta es una de las situaciones más comunes que vas a vivir, y es la de heredar proyectos que alguien más hizo. Los más novatos dirán que ahorras tiempo si vuelves a hacer todo desde cero, pero lo cierto es que es al revés. Aprender a leer, debuggear y probar código de alguien más es una de las mejores experiencias (dolorosas, lo sé) que te puede ayudar para ser un mejor desarrollador, porque ahí pones en práctica qué tan bien lo harías tu, o qué tan mal dejaron ese código heredado.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="siempretrataderompertucdigo"&gt;
Siempre trata de romper tu código&lt;/h2&gt;
&lt;br /&gt;
Los que empezamos a programar nos preocupamos más porque nuestro código funcione en el escenario ideal, a probar los escenarios donde no. Un código de calidad no es el que cumple su funcionamiento, sino que también responde ante entradas de datos erróneas, ante desbordamientos, ante escenarios extremos o nulos de datos, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;h2 id="conclusiones"&gt;
Conclusiones&lt;/h2&gt;
&lt;br /&gt;
Estos son algunos tips que puedes poner en práctica en tu día a día sin tener que invertir tiempo en cosas que no sean tareas comunes de cualquier desarrollador, solo necesitas la actitud y disposición para poder ejercerlas.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-KNASNGYpLsQ/XX6dZkcFN3I/AAAAAAAAmOw/9YQoAKDDY2EJHbABvYVtzh_Fb8mrpKUFQCLcBGAsYHQ/s72-c/como-ser-mejor-desarrollador.jpg" width="72"/></item><item><title>Tutorial conexión de MongoDB en Docker con Express y NodeJS</title><link>http://www.vidamrr.com/2019/09/tutorial-conexion-de-mongodb-en-docker.html</link><category>docker</category><category>mongodb</category><category>nodejs</category><category>tutoriales</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Wed, 11 Sep 2019 10:17:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-698038757105741372</guid><description>&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://1.bp.blogspot.com/-0HzOrBCuMj0/XXhW-a3DcTI/AAAAAAAAmNA/QheMEvmpZXUm6d5vNIv1KniKwYtJhHF6QCLcBGAsYHQ/s1600/docker-mongo-express.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Mongo express y docker" border="0" data-original-height="900" data-original-width="1600" height="360" src="https://1.bp.blogspot.com/-0HzOrBCuMj0/XXhW-a3DcTI/AAAAAAAAmNA/QheMEvmpZXUm6d5vNIv1KniKwYtJhHF6QCLcBGAsYHQ/s640/docker-mongo-express.jpg" title="Mongo express y docker" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
He estado jugando con Docker para crear algunos servicios, y sobre todo, evitar tener que descargar e instalar plataformas que solo quiero usar de prueba. En mi último demo estuve jugando con MongoDB y se me ocurrió hacer un tutorial para enseñarles a configurar MondoDB en Docker para crear una conexión con NodeJS y ExpressJS.&lt;br /&gt;
&lt;h2 id="prerequisitos"&gt;Prerequisitos&lt;/h2&gt;Para poder seguir este tutorial se necesitan tener bases de cómo funciona NodeJS y ExpressJS, así como algo muy introductorio a Docker y Dockerfile, pero ya lo iré explicando.&lt;br /&gt;
&lt;h2 id="1-creaci-n-de-dockerfile"&gt;1. Creación de Dockerfile&lt;/h2&gt;Una de las maravillas que ofrece Docker es la posibilidad de preparar todos los componentes que necesitas para tu desarrollo en un editor de texto y de ahí ejecutarlo. Yo para poder montar MongoDB voy a necesitar dos servicios:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;El motor de bases de datos de MongoDB&lt;/li&gt;
&lt;li&gt;Una interfaz web para administrar visualmente mis bases de datos. En este caso uso Mongo Express&lt;/li&gt;
&lt;/ol&gt;Para empezar hay que crear nuestro documento (docker-compose.yaml). Yo tengo uno similar a este:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class="hljs-attribute"&gt;version&lt;/span&gt;: &lt;span class="hljs-string"&gt;'3.1'&lt;/span&gt;
&lt;span class="hljs-attribute"&gt;services&lt;/span&gt;:
  &lt;span class="hljs-attribute"&gt;mongo&lt;/span&gt;:
    &lt;span class="hljs-attribute"&gt;image&lt;/span&gt;: mongo
    &lt;span class="hljs-attribute"&gt;container_name&lt;/span&gt;: mongodb
    &lt;span class="hljs-attribute"&gt;restart&lt;/span&gt;: always
    &lt;span class="hljs-attribute"&gt;environment&lt;/span&gt;:
      &lt;span class="hljs-attribute"&gt;MONGO_INITDB_ROOT_USERNAME&lt;/span&gt;: root
      &lt;span class="hljs-attribute"&gt;MONGO_INITDB_ROOT_PASSWORD&lt;/span&gt;: example
      &lt;span class="hljs-attribute"&gt;MONGO_INITDB_DATABASE&lt;/span&gt;: ejemplodb
    &lt;span class="hljs-attribute"&gt;ports&lt;/span&gt;:
      - &lt;span class="hljs-number"&gt;27017&lt;/span&gt;:&lt;span class="hljs-number"&gt;27017&lt;/span&gt;

  &lt;span class="hljs-attribute"&gt;mongo-express&lt;/span&gt;: 
    &lt;span class="hljs-attribute"&gt;image&lt;/span&gt;: mongo-express
    &lt;span class="hljs-attribute"&gt;restart&lt;/span&gt;: always
    &lt;span class="hljs-attribute"&gt;container_name&lt;/span&gt;: mongodb-ui
    &lt;span class="hljs-attribute"&gt;ports&lt;/span&gt;:
      - &lt;span class="hljs-number"&gt;8081&lt;/span&gt;:&lt;span class="hljs-number"&gt;8081&lt;/span&gt;
    &lt;span class="hljs-attribute"&gt;environment&lt;/span&gt;:
      &lt;span class="hljs-attribute"&gt;ME_CONFIG_MONGODB_ADMINUSERNAME&lt;/span&gt;: root
      &lt;span class="hljs-attribute"&gt;ME_CONFIG_MONGODB_ADMINPASSWORD&lt;/span&gt;: example
&lt;/code&gt;&lt;/pre&gt;En este Dockerfile estoy configurando las imagenes de MongoDB y Mongo Express, el nombre de los contenedores para identificarlos al momento de detenerlos o eliminarlos, y las configuraciones como el username y password del usuario root. Los puertos están siendo los de default: 27017 para la base de datos y 8081 para la interfaz web.&lt;br /&gt;
Una vez hecho eso procedemos a correr el comando&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class="hljs-attribute"&gt;docker-compose up&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;En este momento se aprovisionan nuestros servicios, y una vez que hayan terminado de inicializarse y construido el contenedor podemos acceder a la interfaz web de Mongo Express&lt;br /&gt;
&lt;h2 id="2-configurar-aplicaci-n-de-nodejs-y-expressjs"&gt;2. Configurar aplicación de NodeJS y ExpressJS&lt;/h2&gt;Ahora vamos a crear nuestra conexión desde nuestra aplicación de NodeJS usando Express. Lo primero es installar Express&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;npm &lt;span class="hljs-keyword"&gt;install&lt;/span&gt; express
&lt;/code&gt;&lt;/pre&gt;adicional instalamos Mongoose, que es un módulo que nos permite de forma más amigable hacer la conexión y operaciones a nuestras bases de datos de Mongo&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;npm &lt;span class="hljs-keyword"&gt;install&lt;/span&gt; mongoose
&lt;/code&gt;&lt;/pre&gt;Ahora sí, a crear nuestra aplicación. (app.js)&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class="hljs-keyword"&gt;const&lt;/span&gt; express       = &lt;span class="hljs-keyword"&gt;require&lt;/span&gt;(&lt;span class="hljs-string"&gt;'express'&lt;/span&gt;);
&lt;span class="hljs-keyword"&gt;const&lt;/span&gt; bodyParser    = &lt;span class="hljs-keyword"&gt;require&lt;/span&gt;(&lt;span class="hljs-string"&gt;'body-parser'&lt;/span&gt;);
&lt;span class="hljs-keyword"&gt;const&lt;/span&gt; cors          = &lt;span class="hljs-keyword"&gt;require&lt;/span&gt;(&lt;span class="hljs-string"&gt;'cors'&lt;/span&gt;); 
&lt;span class="hljs-keyword"&gt;const&lt;/span&gt; mongoose      = &lt;span class="hljs-keyword"&gt;require&lt;/span&gt;(&lt;span class="hljs-string"&gt;'mongoose'&lt;/span&gt;);

&lt;span class="hljs-keyword"&gt;const&lt;/span&gt; PORT = &lt;span class="hljs-number"&gt;3000&lt;/span&gt;;
&lt;span class="hljs-keyword"&gt;const&lt;/span&gt; app = express();
app.&lt;span class="hljs-keyword"&gt;use&lt;/span&gt;(cors());
app.&lt;span class="hljs-keyword"&gt;use&lt;/span&gt;(bodyParser.json());

app.get(&lt;span class="hljs-string"&gt;'/'&lt;/span&gt;, (req, res) =&amp;gt;{
    res.send(&lt;span class="hljs-string"&gt;'Index'&lt;/span&gt;);
});

app.listen(PORT, () =&amp;gt;{
    console.log(&lt;span class="hljs-string"&gt;'Servidor backend listo...'&lt;/span&gt;);
});
&lt;/code&gt;&lt;/pre&gt;Lo que tenemos en esta app es simplemente:&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Incluir los módulos que vamos a ocupar&lt;/li&gt;
&lt;li&gt;Inicializar nuestro middleware, el cual puedes o no ocupar para tu aplicación&lt;/li&gt;
&lt;li&gt;inicializar un ruteo para cargar nuestro index&lt;/li&gt;
&lt;li&gt;configurar el puerto para escuchar peticiones&lt;/li&gt;
&lt;/ol&gt;Teniendo eso ya podemos configurar la conexión a MongoDB en nuestro contenedor en Docker.&lt;br /&gt;
&lt;h2 id="3-conexi-n-a-mongodb"&gt;3. Conexión a MongoDB&lt;/h2&gt;Vamos a empezar con la conexión a nuestra base de datos:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;mongoose.connect(&lt;span class="hljs-string"&gt;'mongodb://localhost/basededatos'&lt;/span&gt;, {&lt;span class="hljs-string"&gt;useNewUrlParser:&lt;/span&gt; &lt;span class="hljs-literal"&gt;true&lt;/span&gt;, &lt;span class="hljs-string"&gt;useUnifiedTopology:&lt;/span&gt; &lt;span class="hljs-literal"&gt;true&lt;/span&gt;});
&lt;/code&gt;&lt;/pre&gt;Aquí está lo importante para poder conectarnos a nuestra base de datos. Lo primero es que siempre usemos el usuario:password para conectarnos a nuestra base de datos, y lo segundo es que mencionemos a qué base de datos queremos conectarnos.&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;const connection = mongoose.connection;

connection.once(&lt;span class="hljs-string"&gt;'open'&lt;/span&gt;, &lt;span class="hljs-function"&gt;&lt;span class="hljs-params"&gt;()&lt;/span&gt; =&amp;gt;&lt;/span&gt;{
    &lt;span class="hljs-built_in"&gt;console&lt;/span&gt;.log(&lt;span class="hljs-string"&gt;'Conectado a la BD'&lt;/span&gt;);
});
&lt;/code&gt;&lt;/pre&gt;Lo siguiente es la conexión con el evento de 'open', y una vez que conecte vamos a poder ver en nuestra consola el mensaje de que tuvimos éxito.&lt;br /&gt;
&lt;h2 id="algunos-errores-comunes"&gt;Algunos errores comunes&lt;/h2&gt;Al menos a mi en un principio traté de usar la conexión de este forma&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;mongoose.connect(&lt;span class="hljs-string"&gt;'mongodb://user:pass@localhost/db'&lt;/span&gt;, {&lt;span class="hljs-string"&gt;useNewUrlParser:&lt;/span&gt; &lt;span class="hljs-literal"&gt;true&lt;/span&gt;, &lt;span class="hljs-string"&gt;useUnifiedTopology:&lt;/span&gt; &lt;span class="hljs-literal"&gt;true&lt;/span&gt;});
&lt;/code&gt;&lt;/pre&gt;poniendo las credenciales de root no me dejaba autenticarme, me salía el siguiente error:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class="hljs-string"&gt;UnhandledPromiseRejectionWarning:&lt;/span&gt; &lt;span class="hljs-string"&gt;MongoError:&lt;/span&gt; Authentication failed
&lt;/code&gt;&lt;/pre&gt;Lo que podemos es crear un nuevo usuario para poder autenticarnos sin tener que ser root.&lt;br /&gt;
Para ello nos conectamos a nuestra consola de mongo en Docker&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;docker exec -&lt;span class="hljs-keyword"&gt;it&lt;/span&gt; mongodb mongo -u root
&lt;/code&gt;&lt;/pre&gt;Usamos el comando exec para poder ejecutar un servicio dentro de nuestro contenedor, el cual es mongo. Hay que notar que pongo la bandera de usuario para poder loguearnos como root y me pidan la contraseña. Añadir un nuevo usuario con permisos require que seas administrador para hacerlo, si solo te logueas no va a ser posible.&lt;br /&gt;
Ya dentro de nuestra consola de Mongo, vamos a ir a ejecutar la siguiente función para crear un nuevo usuario&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&lt;span class="hljs-selector-tag"&gt;use&lt;/span&gt; &lt;span class="hljs-selector-tag"&gt;tu-base-de-datos&lt;/span&gt;
&lt;span class="hljs-selector-tag"&gt;db&lt;/span&gt;&lt;span class="hljs-selector-class"&gt;.createUser&lt;/span&gt;({
    &lt;span class="hljs-attribute"&gt;user&lt;/span&gt;: &lt;span class="hljs-string"&gt;'user'&lt;/span&gt;,
    &lt;span class="hljs-attribute"&gt;pwd&lt;/span&gt;: &lt;span class="hljs-string"&gt;'pass'&lt;/span&gt;,
    &lt;span class="hljs-attribute"&gt;roles&lt;/span&gt;: [
        { &lt;span class="hljs-attribute"&gt;role&lt;/span&gt;: &lt;span class="hljs-string"&gt;'readWrite'&lt;/span&gt;, &lt;span class="hljs-attribute"&gt;db&lt;/span&gt;: &lt;span class="hljs-string"&gt;'tu-base-de-datos'&lt;/span&gt; }
    ]
})
&lt;/code&gt;&lt;/pre&gt;con eso ya puedes autenticarte con esta forma&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;mongoose.connect(&lt;span class="hljs-string"&gt;'mongodb://user:pass@localhost/db'&lt;/span&gt;, {&lt;span class="hljs-string"&gt;useNewUrlParser:&lt;/span&gt; &lt;span class="hljs-literal"&gt;true&lt;/span&gt;, &lt;span class="hljs-string"&gt;useUnifiedTopology:&lt;/span&gt; &lt;span class="hljs-literal"&gt;true&lt;/span&gt;});
&lt;/code&gt;&lt;/pre&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-0HzOrBCuMj0/XXhW-a3DcTI/AAAAAAAAmNA/QheMEvmpZXUm6d5vNIv1KniKwYtJhHF6QCLcBGAsYHQ/s72-c/docker-mongo-express.jpg" width="72"/></item><item><title>Introducción a promesas en Javascript</title><link>http://www.vidamrr.com/2019/09/introduccion-promesas-en-javascript.html</link><category>javascript</category><category>tutoriales</category><category>Videos</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 2 Sep 2019 15:34:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-2377335333556443982</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-G-l0BvgslG0/XW18lVGLvOI/AAAAAAAAmIY/TOdkDjuKwMMaCoOlqKzaNyExm2q4ZS8_QCLcBGAs/s1600/promesas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="720" data-original-width="1280" height="360" src="https://1.bp.blogspot.com/-G-l0BvgslG0/XW18lVGLvOI/AAAAAAAAmIY/TOdkDjuKwMMaCoOlqKzaNyExm2q4ZS8_QCLcBGAs/s640/promesas.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class="fullpost"&gt; Hoy en día manejar promesas es una de las actividades que necesitas hacer para poder programar aplicaciones mucho más robustas y limpias visualmente. En este tutorial vamos a ver una introducción a las promesas, para qué sirven y cómo nos ayudan en nuestro día a día como programadores.&lt;/span&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/VPHAIUFgc3k/0.jpg" src="https://www.youtube.com/embed/VPHAIUFgc3k?feature=player_embedded" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;br /&gt;
&lt;h2&gt;
¿Qué son las promesas?&lt;/h2&gt;
Las promesas son una forma de poder implementar código, el cual se ejecute después de evaluar si una condición esperada es verdadera o salió algo mal. Muchas de las operaciones donde vamos a implementar promesas es en operaciones asíncronas, donde no sabemos cuando va a terminar una actividad, y por eso las promesas nos ayudan a evaluar si dicha operación asíncrona fue exitosa o falló.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
¿Cómo se implementan?&lt;/h2&gt;
En Javascript vamos a usar la siguiente notación para crear una nueva promesa:&lt;br /&gt;
&lt;script src="https://gist.github.com/marcosrivasr/10933635635efdaa45b8e50876e05952.js"&gt;&lt;/script&gt;&lt;br /&gt;
Al definir una promesa debemos tomar en cuenta los dos parámetros que aparecen ahí, ya que son los que vamos a usar posteriormente en la implementación para mandar a llamarlos. Esos dos parámetros actúan como placeholders que van a invocarse cuando nosotros programemos que nuestra promesa tuvo éxito al ejecutar su actividad, o cuando hubo algún error.&lt;br /&gt;
&lt;br /&gt;
Para un ejemplo muy sencillo podemos evaluar el valor de una variable. Si la variable cumple nuestra condición vamos a invocar a resolve() como función. Dentro de ella podemos colocar valores que queramos pasar para cuando se invoque nuestra promesa.&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/marcosrivasr/e9207e2e23e80aba8c7257c4faa92ecc.js"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Por último, para mandar a llamar a nuestra promesa basta con ejecutar el método .then(), una vez hecho esto dentro podemos hacer referencia al valor que pasamos en la función de resolve() y con ello implementar una función. Si llegase a fallar nuestra promesa podemos usar el método .catch() para poder implementar una función de error&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/marcosrivasr/0a25ba1b8fe07a53e6e2272d541b49e3.js"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
Al final, nuestro código completo se vería así:&lt;br /&gt;
&lt;br /&gt;
&lt;script src="https://gist.github.com/marcosrivasr/131bfdca247e6f40645b2680851316cc.js"&gt;&lt;/script&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusiones&lt;/h3&gt;
Las promesas en su mínima expresión son una forma muy poderosa de sustitución a los callbacks, además de que nos permiten definir la promesa y luego implementarla de forma muy ordenada sintácticamente. Más adelante vamos a ver otros usos más completos y avanzados ya poniendo en práctica otros temas de Javascript</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-G-l0BvgslG0/XW18lVGLvOI/AAAAAAAAmIY/TOdkDjuKwMMaCoOlqKzaNyExm2q4ZS8_QCLcBGAs/s72-c/promesas.jpg" width="72"/></item><item><title>7 consejos para diseño de tablas comparativas</title><link>http://www.vidamrr.com/2019/08/7-consejos-para-diseno-de-tablas.html</link><category>consejos</category><category>diseño</category><category>tablas</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 12 Aug 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-7643085601387147702</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-E2Dc0w8ZsBM/XU8DjPcnFiI/AAAAAAAAmEE/JL2YTe4mcJ0O5aike_Bh7rdti5VniBXMQCLcBGAs/s1600/tabla-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="7 consejos para diseño de tablas comparativas" border="0" data-original-height="369" data-original-width="600" height="392" src="https://1.bp.blogspot.com/-E2Dc0w8ZsBM/XU8DjPcnFiI/AAAAAAAAmEE/JL2YTe4mcJ0O5aike_Bh7rdti5VniBXMQCLcBGAs/s640/tabla-01.jpg" title="7 consejos para diseño de tablas comparativas" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
Las tablas comparativas las vamos a ver muy frecuentemente en sitios como Amazon, donde podemos ver la comparación de características de un conjunto de productos para saber las diferencias de cada una de ellas. Otro uso muy común es cuando vamos a adquirir algún producto o suscripción, y hay varios niveles, desde el básico hasta el customizado. En este tipo de escenarios lo importante de poner una tabla comparativa es que el usuario pueda ver de forma visual las diferencias entre ese producto o servicio, para que de una u otra forma también se pueda inducir la elección a un tipo específico. En este video vamos a ver algunos consejos para el diseño de tablas comparativas.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;1. Resalta atributos importantes&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Este es el primer consejo. Cuando construimos sitios interactivos es fundamental saber qué atributos debemos resaltar como por ejemplo el precio de la opción que más recomendamos a los usuarios, o características que no tienen las demás opciones. Esto es para que el usuario tenga presente esas cualidades y que al momento de tomar su decisión siempre recuerde las características resaltadas.&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://1.bp.blogspot.com/-E2Dc0w8ZsBM/XU8DjPcnFiI/AAAAAAAAmEE/JL2YTe4mcJ0O5aike_Bh7rdti5VniBXMQCLcBGAs/s1600/tabla-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="369" data-original-width="600" height="392" src="https://1.bp.blogspot.com/-E2Dc0w8ZsBM/XU8DjPcnFiI/AAAAAAAAmEE/JL2YTe4mcJ0O5aike_Bh7rdti5VniBXMQCLcBGAs/s640/tabla-01.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;2. El problema del contenido&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Las tablas comparativas no deberían tener mucho contenido por celda, pero tampoco debería haber celdas sin contenido, ya que esto hace ver a la tabla vacía. Lo importante es siempre acotar el contenido con características puntuales, y si es posible poner un link a otra sección para explicar mejor. Las opciones donde no haya contenido que poner, ya sea porque esa opción o columna no tiene características de los demás niveles, siempre es preferible poner que no existe, no aplica, o alguna marca que indique que ese campo es vacío. Este tema afecta mucho al usuario ya que si no ve nada en la celda pensará que faltó ponerle contenido o lo dejará con la duda de si aplica o no.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;3. Agrupa atributos&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Una forma visual de poder navegar en una tabla comparativa es con el uso de grupos, o cabeceras, para que si tu tabla va a tener muchas filas de contenido, mejor las agrupes y el usuario pueda consultar aquellos atributos que le son más interesantes en ese momento.&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://1.bp.blogspot.com/-aj6DPWMAs8g/XU8DjE4UEUI/AAAAAAAAmEM/EtjbRbUFAQMo3dmjZBEOl-m1xbFxa52pACLcBGAs/s1600/tabla-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="409" data-original-width="600" height="436" src="https://1.bp.blogspot.com/-aj6DPWMAs8g/XU8DjE4UEUI/AAAAAAAAmEM/EtjbRbUFAQMo3dmjZBEOl-m1xbFxa52pACLcBGAs/s640/tabla-02.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;4. Resalta de acuerdo a la necesidad&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Una forma más dinámica para una tabla comparativa puede ser resaltar atributos que busque el cliente, por ejemplo, el producto más barato, o el que tiene más beneficios, o el más popular. No hagamos solo estático el resaltado de atributos, sino que también démosle al usuario la oportunidad de tener varios resaltados.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;5. Mantén un balance en el diseño&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Lo más simple siempre va a ser mejor. Las tablas comparativas no deberían tener simbologías complejas, detalles o links adicionales, solo los atributos importantes, las imágenes y resaltados fundamentales para que haya un balance entre la tabla y el contenido. Recuerda que al final el usuario solo quiere comparar de un vistazo dos productos o servicios, no hace falta complicar mucho el diseño.&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://1.bp.blogspot.com/-yZe8qW3o8MI/XU8DjFd2UEI/AAAAAAAAmEI/v-Ww2-RV_QUbl8Wb9hXbi_iMnEOQeJRxQCLcBGAs/s1600/tabla-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="455" data-original-width="600" height="484" src="https://1.bp.blogspot.com/-yZe8qW3o8MI/XU8DjFd2UEI/AAAAAAAAmEI/v-Ww2-RV_QUbl8Wb9hXbi_iMnEOQeJRxQCLcBGAs/s640/tabla-03.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;6. Haz tu tabla fácil de compartir&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Sobre todo en productos donde el precio es considerable siempre ten en mente que alguien va a sacar un screenshot en su computadora o pantalla, por lo que trata de mantener una tabla libre de scrolls, de paneles colapsables o de tablas muy grandes que no permitan tener en una pantalla mediana o pequeña la comparación. Si es posible trata de tener esa misma tabla en formato de imagen para que peuda ser compartida en las redes sociales.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;7. No uses muchos colores para resaltar&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
Basta con tener un solo color para resaltar los puntos importantes de una tabla comparativa. El uso exagerado de colores para resaltar, o un esquema complejo para identificar similitudes y diferencias solo hará que el usuario busque comparar en otro sitio o simplemente la decisión de comparar tus productos y servicios se extinga.&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://1.bp.blogspot.com/-eFgk_N2TwYk/XU8DjrMUg4I/AAAAAAAAmEQ/9ze6PpUEy5owbGHb0vxDcffCBLo19MgFwCLcBGAs/s1600/tabla-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="350" data-original-width="600" height="371" src="https://1.bp.blogspot.com/-eFgk_N2TwYk/XU8DjrMUg4I/AAAAAAAAmEQ/9ze6PpUEy5owbGHb0vxDcffCBLo19MgFwCLcBGAs/s640/tabla-04.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Vía&amp;nbsp;&lt;a href="https://line25.com/ui-ux-design/comparison-table" target="_blank"&gt;line25&lt;/a&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-E2Dc0w8ZsBM/XU8DjPcnFiI/AAAAAAAAmEE/JL2YTe4mcJ0O5aike_Bh7rdti5VniBXMQCLcBGAs/s72-c/tabla-01.jpg" width="72"/></item><item><title>30 cosas que me gustaría haber sabido cuando empecé a programar</title><link>http://www.vidamrr.com/2019/07/30-cosas-que-me-gustaria-haber-sabido.html</link><category>consejos</category><category>programacion</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 29 Jul 2019 18:36:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-4823408315090539584</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-Rj-XifAOIyk/XT-CjEBcM3I/AAAAAAAAmB8/VInFgilHB3UGTdFaAOoeZHjdySOzzw_WACLcBGAs/s1600/hacker-programmer-working-with-data-code-in-a-dark-room-hackers-desk_r5btgt1bl_thumbnail-full01.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="30 cosas que me gustaría haber sabido cuando empecé a programar" border="0" data-original-height="900" data-original-width="1600" height="360" src="https://1.bp.blogspot.com/-Rj-XifAOIyk/XT-CjEBcM3I/AAAAAAAAmB8/VInFgilHB3UGTdFaAOoeZHjdySOzzw_WACLcBGAs/s640/hacker-programmer-working-with-data-code-in-a-dark-room-hackers-desk_r5btgt1bl_thumbnail-full01.png" title="30 cosas que me gustaría haber sabido cuando empecé a programar" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class="fullpost"&gt;
Entrar al mundo de la programación puede ser sencillo o muy difícil dependiendo del contexto de la persona. De hecho, creo que aunque hoy hay muchísma más información que hace cinco años, la dificultad todavía es un poco elevada para alguien que nunca ha estado en contacto con el mundo de la programación, especialmente si se adentra directo en ella. En este post les voy a compartir algunas ideas de lo que me hubiera gustado conocer cuando empecé con la programación, que tal vez a ti si te sirvan y con eso puedas tener una curva de aprendizaje mucho más rápida en menos tiempo.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class="fullpost"&gt;No necesitas un grado universitario para ser desarrollador, pero sí necesitas tener conocimientos de ingeniería&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;La programación no solo es resolver problemas, sino también usar la creatividad para poder encontrar diferentes formas de resolver problemas&lt;/li&gt;
&lt;li&gt;No puedes aprender todo sobre programación, es imposible, pero sí puedes aprender cosas básicas que te pueden servir en cualquier momento, todas las áreas de la programación comparten cosas similares, y cada una ofrece algo más específico.&lt;/li&gt;
&lt;li&gt;Date un descanso en la programación, no es cierto que tengas que estar horas en la computadora para ser mejor, requiere esfuerzo pero no dejar tu vida personal&lt;/li&gt;
&lt;li&gt;Programar es acerca de entender conceptos y aplicarlos, no de memorizar código, nadie que intente memorizar código puede ser considerado un programador&lt;/li&gt;
&lt;li&gt;Siempre habrá alguien que sepa más que tu, y es normal, pasa con todas las áreas de estudio, lo importante es que tu sepas lo que necesitas aprender y lo aprendas.&lt;/li&gt;
&lt;li&gt;No seas adicto a la programación, sal, juega, ten una relación; que ser programador no sea lo primero, sino lo que te complementa después de tener una vida propia&lt;/li&gt;
&lt;li&gt;Aprenderás a programar si te pones retos contigo mismo, es decir, si te pones objetivos de programas, funciones, o ciertas cosas que necesitas hacer en un determinado tiempo (y que sea técnicamente realista)&lt;/li&gt;
&lt;li&gt;Al contrario de lo que dicen, no es 100% cierto que necesites saber matemáticas para ser buen programador, como lo dije antes, hay diferentes áreas de aplicación, y no todas requieren que seas bueno, pero sí que conozcas las operaciones básicas de suma, resta, multiplicación y división.&lt;/li&gt;
&lt;li&gt;No necesitas ponerte un estereotipo de novato en programación, hay mucha gente que puede saber otros lenguajes y no uno específico, y no por eso se considera novato, simplemente estás aprendiendo.&lt;/li&gt;
&lt;li&gt;Trata de terminar tus proyectos, porque de esa forma podrás llegar a un objetivo inicial, que es terminar algo.&lt;/li&gt;
&lt;li&gt;Te traumarás eventualmente por encontrar el error que evita que funcione tu programa correctamente, y es algo normal&lt;/li&gt;
&lt;li&gt;Es normal que busques en internet cómo se hace determinada cosa para tu programa, como dije, no es buen programador el que memoriza, sino el que usa lo sabe para programar mejor, y buscar es una buena habilidad&lt;/li&gt;
&lt;li&gt;Necesitas no solo programar sino también guiarte en prácticas recomendadas, inicia tu vida de programador también aprendiendo los consejos de patrones de diseño de programación&lt;/li&gt;
&lt;li&gt;Una obsesión más será el poner nombres correctos a tus variables y funciones, es totalmente normal y siempre pensarás que pueden llamarse de otra forma&lt;/li&gt;
&lt;li&gt;Un trauma común es programar con nombres en inglés o español, o si es deEstaForma o de_esta_otra_forma, cualquiera de las opciones es válida, lo importante es que tu código sea entendible&lt;/li&gt;
&lt;li&gt;Es bueno darse por vencido, porque en algún proyecto puede que veas que necesitas otros conocimientos para terminar esa parte que te faltaba. De aquí en adelante si lo que deseas es seguir aprendiendo, hazlo y vuelve a interntarlo&lt;/li&gt;
&lt;li&gt;Si ves que un programa ya se hizo muy elaborado o complicado vuelve a empezar desde cero, eso te dará la oportunidad de volverlo a hacer de otra forma, y no tratar de arreglar algo que quizá ya no tiene solución&lt;/li&gt;
&lt;li&gt;Cuando estés programando te empezarás a preguntar si lo que haces es la mejor forma de hacerlo, no pierdas esa curiosidad&lt;/li&gt;
&lt;li&gt;Programar por gusto no es lo mismo que trabajar en programar. Lo primero te va a encantar, y lo segundo no, pero es algo que tienes que identificar para no odiar la programación&lt;/li&gt;
&lt;li&gt;Es completamente normal no pasar una entrevista técnica de programación, mas si nunca has practicado problemas de lógica realmente difíciles&lt;/li&gt;
&lt;li&gt;Siempre creete que eres bueno, pero no lo suficiente para perder el piso y creer que nadie puede contra ti&lt;/li&gt;
&lt;li&gt;Habrá quien te diga que lo que haces está mal, pero si no te ayuda a mejorar puedes hacer caso omiso de esos comentarios&lt;/li&gt;
&lt;li&gt;Trata de buscar programadores que admires, porque de esa forma querrás tener una visión de ti mismo en un futuro&lt;/li&gt;
&lt;li&gt;Siempre es difícil trabajar en equipo para un proyecto, porque no es la misma técnica para todos, pero trata siempre de demostrar por qué deberían hacer las cosas de cierta forma&lt;/li&gt;
&lt;li&gt;Si revisas después de un año el código de algún proyecto, te vas a dar cuenta que pudo haber sido mejor, toma ese feedback y aplícalo en el siguiente proyecto que hagas&lt;/li&gt;
&lt;li&gt;Siempre tenemos un momentum, ese instante donde a pesar de que ya quieres terminar algo no te deja descansar. Si te pasa eso es que realmente te gusta la programación, pero evita que pase seguido&lt;/li&gt;
&lt;li&gt;Odiarás y amarás los hackatones porque te permite ponerte a prueba contra el tiempo, pero te dolerá si lo tuyo no es la presión&amp;nbsp;&lt;/li&gt;
&lt;li&gt;No todo va a ser copiar código de páginas como Stack overflow, también necesitas entender el por qué de una solución que buscas&lt;/li&gt;
&lt;li&gt;La programación con música es mucho mejor, inténtalo&lt;/li&gt;
&lt;/ol&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-Rj-XifAOIyk/XT-CjEBcM3I/AAAAAAAAmB8/VInFgilHB3UGTdFaAOoeZHjdySOzzw_WACLcBGAs/s72-c/hacker-programmer-working-with-data-code-in-a-dark-room-hackers-desk_r5btgt1bl_thumbnail-full01.png" width="72"/></item><item><title>Realiza videos rápidos y profesionales con Flexclip</title><link>http://www.vidamrr.com/2019/07/realiza-videos-rapidos-y-profesionales.html</link><category>opinion</category><category>Recursos</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Fri, 5 Jul 2019 00:20:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-8675814383890440441</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-tLUd1P8E9Sw/XR7cN3o_9XI/AAAAAAAAl-U/E0tVtOfgvLU9Y2RURwWfrl_j33-6-npvACLcBGAs/s1600/video-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Realiza videos rápidos y profesionales con Flexclip" border="0" data-original-height="506" data-original-width="1600" height="126" src="https://1.bp.blogspot.com/-tLUd1P8E9Sw/XR7cN3o_9XI/AAAAAAAAl-U/E0tVtOfgvLU9Y2RURwWfrl_j33-6-npvACLcBGAs/s400/video-04.jpg" title="Realiza videos rápidos y profesionales con Flexclip" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span class="fullpost"&gt;&lt;a href="https://www.flexclip.com/" target="_blank"&gt;Flexclip&lt;/a&gt; es un servicio que encontré y me pareció de lo más interesante para realizar videos rápidos pero bonitos. Uno de los problemas más grandes que a veces tengo es que si quiero hacer un video rápido, sin necesidad de tener mucha edición, opciones como Adobe Premiere no cumplen su cometido, porque añaden muchísima complejidad a una cinemática con imágenes y texto.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Encontré a Flexclip y creo que de cualquier opción que hayas visto en internet, diría que es la más sencilla de usar con grandes resultados.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="https://1.bp.blogspot.com/-jee4l_PumB0/XR7dXcKWDdI/AAAAAAAAl-s/fpdpaaNNxnAeux6M8MBt9U3lCpT852pBwCLcBGAs/s1600/video-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="Realiza videos rápidos y profesionales con Flexclip" border="0" data-original-height="914" data-original-width="1486" height="392" src="https://1.bp.blogspot.com/-jee4l_PumB0/XR7dXcKWDdI/AAAAAAAAl-s/fpdpaaNNxnAeux6M8MBt9U3lCpT852pBwCLcBGAs/s640/video-05.jpg" title="Realiza videos rápidos y profesionales con Flexclip" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Para empezar podemos elegir una temática de un template para no partir desde cero. La ventaja de usar estas opciones es que ya no necesitas nada más que cambiar el texto y las imágenes, por lo que ya te ahorras al menos la mitad del trabajo.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="https://1.bp.blogspot.com/-aB1Tb-slNuU/XR7cBzNGmkI/AAAAAAAAl-M/y_ENrOdnBRgpNZbs8WMRaFqDlrUKBNXngCLcBGAs/s1600/video-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="Realiza videos rápidos y profesionales con Flexclip" border="0" data-original-height="777" data-original-width="1600" height="310" src="https://1.bp.blogspot.com/-aB1Tb-slNuU/XR7cBzNGmkI/AAAAAAAAl-M/y_ENrOdnBRgpNZbs8WMRaFqDlrUKBNXngCLcBGAs/s640/video-01.jpg" title="Realiza videos rápidos y profesionales con Flexclip" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Cuando llegamos a la interfaz no pude estar más impresionado de lo minimalista y funcional que puede ser tener dos o tres herramientas para trabajar. Como les digo, esto es para cuando necesitamos algo rápido, tenemos videos, imágenes y música, y no queremos perder el tiempo en acomodarlos pixel por pixel a ver si queda bien.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="https://1.bp.blogspot.com/-K-xprFyu89U/XR7cBY-08eI/AAAAAAAAl-I/Rd5azVp5GNsMSawKHKWq7uqVYd5_5AADACLcBGAs/s1600/video-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="Realiza videos rápidos y profesionales con Flexclip" border="0" data-original-height="434" data-original-width="676" height="410" src="https://1.bp.blogspot.com/-K-xprFyu89U/XR7cBY-08eI/AAAAAAAAl-I/Rd5azVp5GNsMSawKHKWq7uqVYd5_5AADACLcBGAs/s640/video-02.jpg" title="Realiza videos rápidos y profesionales con Flexclip" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Los cuadros de control son muy rápidos de editar, no hace falta gran complejidad para poder meter un texto en un formato ya definido para que puedas ver luego luego el resultado.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;a href="https://1.bp.blogspot.com/-yi_d7uiyiNg/XR7cBw4TYkI/AAAAAAAAl-Q/QbQtXjN49jwYtum0gGcZ876KFR64QuNNACLcBGAs/s1600/video-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="778" data-original-width="1600" height="310" src="https://1.bp.blogspot.com/-yi_d7uiyiNg/XR7cBw4TYkI/AAAAAAAAl-Q/QbQtXjN49jwYtum0gGcZ876KFR64QuNNACLcBGAs/s640/video-03.jpg" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Si al contrario, no tenemos ningún contenido para empezar a trabajar, podemos agregar de la galería de Flexclip imágenes y música que sorpresivamente tienen una calidad muy buena.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;Al final tu video se presenta como la composición de varias escenas, donde si quieres acomodarlas solo necesitas moverlas de lugar y ya, a previsualizar el video y si te gustó lo puedes exportar.&lt;/span&gt;&lt;br /&gt;
&lt;span class="fullpost"&gt;&lt;br /&gt;&lt;/span&gt;
&lt;h2&gt;
&lt;span class="fullpost"&gt;Conclusiones&lt;/span&gt;&lt;/h2&gt;
&lt;span class="fullpost"&gt;Este servicio en línea me recordó mucho a cuando usaba Windows Movie Maker para hacer videos cortos o que por la urgencia necesitaba tener en unos cuantos minutos. No ha vuelto a existir un programa igual, pero me sorprende que los servicios web ahora estén tomando esa responsabilidad de seguir ofreciendo hacer videos como lo hace Flexclip, sin la necesidad de ser un experto en edición para crear un contenido de calidad de forma muy rápida.&lt;/span&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-tLUd1P8E9Sw/XR7cN3o_9XI/AAAAAAAAl-U/E0tVtOfgvLU9Y2RURwWfrl_j33-6-npvACLcBGAs/s72-c/video-04.jpg" width="72"/></item><item><title>7 hábitos de programadores altamente efectivos</title><link>http://www.vidamrr.com/2019/06/7-habitos-de-programadores-altamente.html</link><category>codigo</category><category>consejos</category><category>developers</category><category>programacion</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 24 Jun 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-6141333484992669571</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-x3OFqplvSaU/XQ_xzWB1l1I/AAAAAAAAl7I/-qiBF9GCusY5ZDFhpH3xrkw9tvt5ys8nwCLcBGAs/s1600/vidamrr-codigo.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="7 hábitos de programadores altamente efectivos" border="0" data-original-height="501" data-original-width="750" height="426" src="https://1.bp.blogspot.com/-x3OFqplvSaU/XQ_xzWB1l1I/AAAAAAAAl7I/-qiBF9GCusY5ZDFhpH3xrkw9tvt5ys8nwCLcBGAs/s640/vidamrr-codigo.jpeg" title="7 hábitos de programadores altamente efectivos" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Los programadores de calidad son los que van avanzando, crean mejores proyectos y colaboran en equipo. Hay ciertos hábitos que los developers necesitan estar ejecutando de forma regular para poder ofrecer código de calidad, y en este post les voy a mostrar algunos de ellos.&amp;nbsp;&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
1. Aprende a leer el código de los demás&lt;/h2&gt;
&lt;div&gt;
Poder leer código escrito de alguien más te dará más visión sobre si el código que haces es bueno o malo. También es bueno de vez en cuando aprender a entender el código de alguien más porque podrías adoptar técnicas y formas de programar que quizá ni sabías que existían, y de la misma forma hacer que los demás aprendan.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
2. La sensación de malos proyectos&lt;/h2&gt;
&lt;div&gt;
¿Les ha pasado que antes de empezar un proyecto pueden empezar a estructurar el futuro del mismo? eso se aprende con la experiencia, con los retrasos o la dificultad de los proyectos cuando no se planean bien. Este punto de aprender a identificar buenos y malos proyectos ayuda mucho porque al final un desarrollador debería ser capaz de determinar la viabilidad de un proyecto, y más cuando no tiene futuro.&lt;/div&gt;
&lt;h2&gt;
3. Evitar las reuniones&lt;/h2&gt;
&lt;div&gt;
Todos odiamos las reuniones largas en un proyecto. Dar estatus, explicaciones y en general, invertir tiempo en explicarle a los demás qué es lo que pasa con un proyecto es algo que siempre deberíamos evitar. No es estar en contra de tener reuniones, pero para dar avances no es necesario tener una reunión diario, con una a la semana, con correos, y con herramientas como Github se puede reemplazar el tener que invertir tiempo innecesario.&lt;/div&gt;
&lt;h2&gt;
4. Uso de Github&lt;/h2&gt;
&lt;div&gt;
Github y Git son de las herramientas indispensables hoy en día para cualquier desarrollador. Ya sea que trabajes de forma local o colaborativa tener un sistema de versionamiento permite tener eficiencia en los cambios que se hacen a un proyecto, especialmente si es grande. El otro plus es que tener un sistema como Github permite que otros vean tu código sin tener que perder tiempo tratando de mostrarles avances a los líderes del proyecto.&lt;/div&gt;
&lt;h2&gt;
5. Escribir código que pueda ser mantenido&lt;/h2&gt;
&lt;div&gt;
Para ser efectivo como programador, uno de los primeros pasos es programar correctamente. De nada sirve tener los puntos anteriores, si cuando inicia otro proyecto no puedas reusar código que podría servirte de nuevo. Hay que aprender a crear código que pueda ser extendido y mantenido, es decir, que puedas quitar, adaptar y volver a usar en n número de proyectos. Cuando logres hacer lo anterior, habrás ahorrado muchísimo tiempo de programación.&lt;/div&gt;
&lt;h2&gt;
6. Aprende a decir no y prioriza&lt;/h2&gt;
&lt;div&gt;
No todo vas a poder hacer, por eso tienes que priorizar las actividades que sí puedes hacer excelente. La parte del éxito de los programadores es poder ejecutar lo que está en su alcance, compartir responsabilidad con un equipo cuando así se necesita, y decir que no cuando no agrega valor la actividad al proyecto. Si sigues ese mismo principio de desechar lo que te puede hacer perder tiempo y no agregar valor a un proyecto de programación puedes entonces priorizar de forma correcta.&lt;/div&gt;
&lt;h2&gt;
7. Pensamiento de diseño operacional&lt;/h2&gt;
Siempre que trabajamos en un proyecto de programación creemos que con probar los escenarios más obvios, nuestro proyecto ya va a funcionar correctamente. Desde la modificación del código hasta el lanzamiento hay muchísimas variables que podrían afectar el funcionamiento del producto final, por eso un hábito muy identificado en programadores efectivos es que prueban y prueban de todas las formas posibles el software para poder identificar cualquier error posible durante la programación y la liberación. La simple modificación de una línea de código podría afectar otras partes del sistema que probablemente no estemos notando.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
Conclusiones&lt;/h3&gt;
Estos son algunos consejos de programadores que no solo programan bien, sino que tienen un panorama mucho más amplio de cómo contribuir a un proyecto con calidad y acertividad cuando se colabora con otros.</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-x3OFqplvSaU/XQ_xzWB1l1I/AAAAAAAAl7I/-qiBF9GCusY5ZDFhpH3xrkw9tvt5ys8nwCLcBGAs/s72-c/vidamrr-codigo.jpeg" width="72"/></item><item><title>23 consejos para dar presentaciones técnicas efectivas</title><link>http://www.vidamrr.com/2019/06/23-consejos-para-dar-presentaciones.html</link><category>consejos</category><category>presentaciones</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 3 Jun 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-6105407814192256019</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-xQoZtAsg71s/XPQJl7kAVwI/AAAAAAAAly8/nStVBUCCMsAWLlMQ_6Qwfow0bF_GBDJIACLcBGAs/s1600/powerpoint-presentation-tips-templates-1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="23 consejos para dar presentaciones técnicas efectivas" border="0" data-original-height="398" data-original-width="598" height="424" src="https://1.bp.blogspot.com/-xQoZtAsg71s/XPQJl7kAVwI/AAAAAAAAly8/nStVBUCCMsAWLlMQ_6Qwfow0bF_GBDJIACLcBGAs/s640/powerpoint-presentation-tips-templates-1.jpg" title="23 consejos para dar presentaciones técnicas efectivas" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
¿Has asistido a presentaciones técnicas en público? muchas de ellas aunque por los temas suenas interesantes, la forma en que son expuestas hacen que en ocasiones aburran, se hagan tediosas o largas, o simplemente no aprendas lo que en un principio te están vendiendo que vas a conocer. Estos son algunos tips si vas a hacer una presentación de este tipo, donde debemos cuidar ciertos puntos específicos para atraer al público y que una plática técnica sea una buena experiencia de aprendizaje.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Explicar antes de empezar de qué va a tratar la presentación&amp;nbsp;&lt;/li&gt;
&lt;li&gt;Asegúrate de entender el lenguaje que maneja tu audiencia&lt;/li&gt;
&lt;li&gt;Explica los acrónimos que uses para poner contexto&lt;/li&gt;
&lt;li&gt;Si necesitas que el público aprenda un concepto específico, repítelo 3 veces de diferentes maneras&lt;/li&gt;
&lt;li&gt;Usa imágenes en tu presentación, evita texto que haga que la gente lo lea primero antes de ponerte atención&lt;/li&gt;
&lt;li&gt;Preséntate y di tu nombre con claridad&lt;/li&gt;
&lt;li&gt;Hila las recomendaciones con historias que argumenten el por qué de la recomendación&lt;/li&gt;
&lt;li&gt;No te limites a un slide&lt;/li&gt;
&lt;li&gt;Si vas a colocar código en una presentación, asegúrate de que tenga el tamaño adecuado para ser leído a la distancia&lt;/li&gt;
&lt;li&gt;Recuerda que tu público es inteligente, pero no es especialista en el tema que tu hablas, procura explicar todos tus puntos claramente&lt;/li&gt;
&lt;li&gt;Pon un resumen al final de tu charla, para volver a recordar los puntos más importantes&lt;/li&gt;
&lt;li&gt;Usa ejemplos y metáforas para explicar conceptos difíciles&lt;/li&gt;
&lt;li&gt;Trata de explicar a tu audiencia por qué a nivel técnico hay mejoras o no, por qué se están haciendo las cosas de otra forma y el beneficio que ellos obtendrán de hacerlo.&lt;/li&gt;
&lt;li&gt;Practica para tener el tiempo suficiente de dar tu plática y tener espacio de preguntas y respuestas&lt;/li&gt;
&lt;li&gt;Haz pausas entre cada explicación de puntos importantes, para que la audiencia pueda entenderlas.&lt;/li&gt;
&lt;li&gt;Haz bromas para llamar la atención de las personas que están distrayéndose, solo si puedes hacerlo.&lt;/li&gt;
&lt;li&gt;Trata de orientar al público no solo en lo que está pasando ahora, sino lo que vendrá en el futuro.&lt;/li&gt;
&lt;li&gt;Usa un tono de voz dinámico, para evitar que la gente se canse o se duerma por un tono de voz bajo y lento.&lt;/li&gt;
&lt;li&gt;Evita dar contexto muy largo del tema que hablas, usa 10 o menos minutos para darle y a continuación entra de lleno en lo más importante que vienes a platicar.&lt;/li&gt;
&lt;li&gt;Crea suspenso y curiosidad desde el inicio de tu plática&lt;/li&gt;
&lt;li&gt;Pon información adicional a videos, posts o lecturas sugeridas para que la gente pueda encontrar más información relacionada.&lt;/li&gt;
&lt;li&gt;Al final de la presentación da las gracias y espera que la gente aplauda. Cuando el presentador no planea espacios para que el público aplauda se crea un momento muy incómodo.&lt;/li&gt;
&lt;li&gt;Practica con alguien que confíes y te pueda dar retroalimentación para que puedas mejorarlo.&lt;/li&gt;
&lt;/ol&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-xQoZtAsg71s/XPQJl7kAVwI/AAAAAAAAly8/nStVBUCCMsAWLlMQ_6Qwfow0bF_GBDJIACLcBGAs/s72-c/powerpoint-presentation-tips-templates-1.jpg" width="72"/></item><item><title>Java no es gratuito</title><link>http://www.vidamrr.com/2019/05/java-no-es-gratuito.html</link><category>Videos</category><category>vlog</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Tue, 14 May 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-2891873319921065643</guid><description>&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://4.bp.blogspot.com/-h-d-Ai9N9Xs/XNhh2T2FkgI/AAAAAAAAluI/WeZcN18SxHggyxIRU7MKS4aLjpMceCy8ACLcBGAs/s1600/java-costo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Java no es gratuito" border="0" data-original-height="900" data-original-width="1600" height="360" src="https://4.bp.blogspot.com/-h-d-Ai9N9Xs/XNhh2T2FkgI/AAAAAAAAluI/WeZcN18SxHggyxIRU7MKS4aLjpMceCy8ACLcBGAs/s640/java-costo.jpg" title="Java no es gratuito" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Java ha evolucionado a un paso siempre desigual con cada versión, lo que hace que sea odiado y amado por la comunidad de desarrolladores. El otro tema que tiene Java es que Oracle es el dueño del lenguaje, y aunque sigue siendo Open Source, tiene sus propias restricciones para poder usarlo. En este video les explico por qué Java no es gratuito en una parte importante de sus componentes, ya que es importante saberlo para poder crear aplicaciones con otras necesidades y aplicaciones.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/IeoggneYckg/0.jpg" src="https://www.youtube.com/embed/IeoggneYckg?feature=player_embedded" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://4.bp.blogspot.com/-h-d-Ai9N9Xs/XNhh2T2FkgI/AAAAAAAAluI/WeZcN18SxHggyxIRU7MKS4aLjpMceCy8ACLcBGAs/s72-c/java-costo.jpg" width="72"/></item><item><title>¿Cómo elegir cuál lenguaje de programación aprender ?</title><link>http://www.vidamrr.com/2019/05/como-elegir-cual-lenguaje-de.html</link><category>consejos</category><category>programacion</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 13 May 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-2393290305006622406</guid><description>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://3.bp.blogspot.com/-oOQNjL0kw0A/XNhgxHsdgQI/AAAAAAAAluA/xhF3ogWmnLAZVCLMeS3KcNEfJ8JTZMpZgCLcBGAs/s1600/lenguajes-2019.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="¿Cómo elegir cuál lenguaje de programación aprender en 2019?" border="0" data-original-height="533" data-original-width="800" height="426" src="https://3.bp.blogspot.com/-oOQNjL0kw0A/XNhgxHsdgQI/AAAAAAAAluA/xhF3ogWmnLAZVCLMeS3KcNEfJ8JTZMpZgCLcBGAs/s640/lenguajes-2019.jpeg" title="¿Cómo elegir cuál lenguaje de programación aprender en 2019?" width="640" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;
&lt;br /&gt;
Si estás buscando razones para poder empezar con un lenguaje de programación, este post te va a interesar. Te voy a comentar algunas razones por las cuales es mejor empezar en el mundo del desarrollo con algunos lenguajes y después con otros.&lt;br /&gt;
&lt;h2&gt;
Lenguajes de propósito común&lt;/h2&gt;
&lt;div&gt;
Los lenguajes de propósito común son aquellos que no están orientados a un tema específico. Los puedes usar para hacer aplicaciones web, sistemas, aplicaciones con interfaz gráfica, etc, por lo que aprender uno de estos facilita la aplicación a varias utilidades.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Python:&lt;/b&gt; es uno de los lenguajes más fáciles para empezar con programación. Su sintaxis también es muy simple, por lo que puedes entender bien cómo va funcionando el código y las estructuras, además de que Python poco a poco se convierte en el lenguaje preferido para la gente que empieza con programación.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Javascript:&lt;/b&gt; es un real competidor a sentarse en el trono de los lenguajes favoritos para empezar. Javascript ha evolucionado de forma impresionante en unos pocos años para poder ser utilizado en cualquier plataforma y ecosistema presente hoy en día. No hay nada que no se pueda hacer con Javscript, y como menciono, su evolución va avanzando de forma increíblemente rápida, pero obviamente si lo que quieres es tener un enfoque un poco más web, este lenguaje te puede ayudar mucho.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Ruby:&lt;/b&gt; es un lenguaje con la característica de que tiene soporte de muchos paradigmas de programación, como la lineal, la orientada a objetos y funcional. Su sintaxis es más parecido a una estructura de conversación que los anteriores, y te dejará compilar el código aunque tenga errores, por lo que es bastante amigable para poder empezar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Java:&lt;/b&gt; es el lenguaje que más gustos divide a los programadores. Para muchos ya es un lenguaje que no ha evolucionado de la misma forma que los demás, pero otros creen que es de los lenguajes más maduros. La realidad es que si quieres iniciar con un lenguaje que te explique de forma muy visual la programación orientada a objetos este es el mejor. Aprender Java es fácil, quizá verás que tiene mucho código para hacer cosas sencillas, pero también hay una razón para ello, y si logras entender ese concepto prácticamente Java lo dominas en unas cuentas semanas.&lt;/div&gt;
&lt;h2&gt;
Lenguajes de propósito específico&lt;/h2&gt;
&lt;div&gt;
Si queremos aprender algo específico podemos usar de referencia algunos de los siguientes lenguajes para empezar por ese camino:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Machine Learning:&lt;/b&gt; los dos más populares son Python y R, lenguajes que por su simpleza en el código son más eficientes para realizar cálculos estadísticos.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Desarrollo móvil:&lt;/b&gt; para desarrollar aplicaciones móviles nativas tenemos Swift para iOS y Java y Kotlin para Android. Kotlin especialmente toma mucha referencia de Java y le quita el código que no es necesario, por lo que también es buen candidato para hacer apps sin siquiera saber programar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Startups:&lt;/b&gt; si tu enfoque es construir algo rápido y funcional Ruby tiene esa ventaja. Ruby es muy usado en empresas que empiezan por la flexibilidad de construir aplicaciones de forma muy rápida y que pueden seguir programando sobre la marcha.&lt;/div&gt;
&lt;h2&gt;
Lenguajes que tienes que evitar al empezar&lt;/h2&gt;
&lt;div&gt;
Si bien hay lenguajes muy populares hoy en día, mi recomendación es evitarlos ya que o cumplen un propósito demasiado específico, que quizá ni siquiera te interese usar, o tienen una complejidad más elevada para aprender, por lo que puede que te desilusionen si decides elegir uno de ellos.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Entre los ejemplos está Go, Scala, Perl, Typescript, C++. Typescript especialmente le agrega complejidad a Javascript, y se entiende que para llegar ahí, entiendes cómo funciona Javascript y las deficiencias que tiene por las que tienes que cubrir con Typescript. C++ es en definitiva la opción si lo que quieres es administrar memoria y objetos de forma detallada y completa en un lenguaje de programación.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://3.bp.blogspot.com/-oOQNjL0kw0A/XNhgxHsdgQI/AAAAAAAAluA/xhF3ogWmnLAZVCLMeS3KcNEfJ8JTZMpZgCLcBGAs/s72-c/lenguajes-2019.jpeg" width="72"/></item><item><title>10 principios de diseño para POO</title><link>http://www.vidamrr.com/2019/05/10-principios-de-diseno-para-poo.html</link><category>consejos</category><category>programacion</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 6 May 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-6704740982562724698</guid><description>&lt;div&gt;
&lt;a href="https://1.bp.blogspot.com/-Z4uH6EPVIwI/XM8uFLRCuSI/AAAAAAAAlkI/xY7tyHALZk0XiEniO5L7cF-MiQyx-ZhQwCLcBGAs/s1600/POO.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="300" data-original-width="400" src="https://1.bp.blogspot.com/-Z4uH6EPVIwI/XM8uFLRCuSI/AAAAAAAAlkI/xY7tyHALZk0XiEniO5L7cF-MiQyx-ZhQwCLcBGAs/s1600/POO.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;
Empezando a programar con el paradigma de Objetos es un tema muy particular. Mucha gente cree que con el hecho de crear objetos y clases ya está aplicando el paradigma, pero en realidad no. El paradigma consiste no en un aspecto técnico, sino en un aspecto funcional, que puedas adaptarte a una forma de programar, en vez de utilizar formas de programación que cualquier lenguaje puede incluir.&lt;div&gt;
En este post les comparto los 10 principios de diseño para la programación orientada a objetos, esperando que les sirva para mejorar la forma en que hacen código y lo usan.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
1. DRY (Don't repeat yourself)&lt;/h2&gt;
&lt;div&gt;
El principio de la POO es la de no repetir el código, hacer código reusable y abstracto, para que puedas usarlo de nuevo sin necesidad de volver a escribir desde cero. Si tu código es imposible de reusarlo en otra aplicación, o tienes que programar ciertas partes de nuevo porque no se puede adecuar, es un síntoma de que necesitas hacer funciones más abstractas, más genéricas para que puedan ser extendidas con requerimientos más puntuales.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
2. Encapusla&lt;/h2&gt;
&lt;div&gt;
No hay mucha gente que entienda la importancia de la encapsulación, pero es muy simple. Aprende a encapsular el alcance de tus clases. La forma más fácil de hacerlo es poniendo privadas las variables y métodos que son exclusivos de tu clase, y poniendo públicos los métodos que pueden ser usados por otros objetos. Hay más formas de encapsular el código, pero esos dos son los básicos.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
3. Principio de diseño abierto-cerrado&lt;/h2&gt;
&lt;div&gt;
Este principio dice que las clases, métodos y funciones deben estar abiertos para extender su funcionalidad, pero cerrados para ser modificados. Esto significa que tu código debería ser modificado casi nunca pero sí debería servir como base para extenderlo, es decir, para usar herencia, para usar interfaces, para ser la base de nuevas clases, a fin de que nunca llegues a modificar tu código existente para crear nuevo, sino crear código sobre la base que ya tienes.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Esto podemos verlo como si fuera una caja negra, donde tu debes hacer que tu código sea imposible de modificar y solo pueda ser usado desde sus métodos públicos para poder ser extendido.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
4. Principio de responsabilidad única&lt;/h2&gt;
&lt;div&gt;
Este principio hace referencia a que nuestras clases y métodos deben tener una sola tarea o actividad. Una clase que se encarga de operar datos no debería administrar componentes gráficos, ni un método que tiene que mandar un correo electrónico debería manejar funciones adicionales. Esto hace que tus funciones cumplan un solo propósito y hace más fácil que las puedas utilizar más adelante.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
5. Inyección de dependencias&lt;/h2&gt;
&lt;div&gt;
Las dependencias es cuando en una clase necesitas otra para poder trabajar. Piensa en una clase que toma como base otra para mandar un mensaje de texto. La clase original tiene una dependencia y si quisieras usar esa clase pero no quisieras mandar un mensaje de texto hace que tengas que modificar el código para ello. La mejor forma de resolver un problema así es a través de la inyección de dependencias en donde en vez que que la clase original mande a llamar a la segunda clase, se le inyecte a través del uso de frameworks o interfaces para mandar a llamar a algo que después tiene que ser completado, y de esa forma no dependa de otras clases.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
6. Composición sobre herencia&lt;/h2&gt;
&lt;div&gt;
La composición es justamente lo opuesto a la herencia, que es mandar a llamar objetos en vez de heredarlos. Esto es bueno en la medida en que a partir de una misma relación en vez de estar heredando clases y hacer una jerarquía grande, muchas veces para simplificar trabajar con objetos de una misma base en mejor hacerlo a través de la composición o creación de objetos. Para saber más sobre composición y asociación pueden leer &lt;a href="http://www.cristalab.com/tutoriales/programacion-orientada-a-objetos-asociacion-vs-composicion-c89337l/" target="_blank"&gt;este artículo&lt;/a&gt;.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
7. Principio de sustitución Liskov&lt;/h2&gt;
&lt;div&gt;
Este principio dice que si tienes un objeto de subtipo S que deriva de un tipo T deberías tener la posibilidad de usar el objeto de tipo T de la misma forma que uses al subtipo S. Como ejemplo, tenemos que un objeto de tipo Perro deriva de un objeto de tipo Animal, y si tienes una función que necesita un tipo Perro como parámetro, si colocas un objeto de tipo Animal debería funcionar la clase de la misma forma, sin errores.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
8. Principio de segregación de interfaces&lt;/h2&gt;
&lt;div&gt;
Este principio refiere a que no incluyamos métodos que no va a utilizar el programador en una interfaz. Cuando creamos interfaces podemos colorcar métodos que queremos que el programador use para extender su código, pero si metemos funciones que no va a usar o no siempre va a usar, estamos cayendo en este error de POO.&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
9. Programación de interfaces no implementaciones&lt;/h2&gt;
&lt;div&gt;
Tu código siempre debe estar enfocado a definir interfaces, no implementación de las mismas. Las interfaces ya nos dan una forma abstracta de poder hacer funciones genéricas que puedan ser usadas en muchos escenarios. Hay que mantener esa estrategia para crear código que puedas reusar.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
10. Principios de delegación&lt;/h2&gt;
&lt;div&gt;
Este último principio dice que no hay que hacer todo el código nosotros, ya hay clases a las que le podemos delegar esa tarea, como por ejemplo comparar dos objetos. Todos los objetos tienen la clase equals() por lo cual es innecesario implementar un nuevo método para esa funcionalidad. Es un ejemplo básico pero nos dice que hay que conocer los métodos de los objetos para saber qué ya hay código hecho que podemos usar y no todo a fuerza lo tenemos que implementar desde cero.&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-Z4uH6EPVIwI/XM8uFLRCuSI/AAAAAAAAlkI/xY7tyHALZk0XiEniO5L7cF-MiQyx-ZhQwCLcBGAs/s72-c/POO.jpg" width="72"/></item><item><title>7 consejos para crear logotipos en 2019</title><link>http://www.vidamrr.com/2019/04/7-consejos-para-crear-logotipos-en-2019.html</link><category>consejos</category><category>logotipos</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Tue, 16 Apr 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-3825326727343344823</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-XDXSvi3AP5c/XLOEEOkmPQI/AAAAAAAAlgM/eqVonPeGjig0ETP9qSP37-hXNlUdpECGQCLcBGAs/s1600/download.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="7 consejos para crear logotipos en 2019" border="0" data-original-height="174" data-original-width="290" height="384" src="https://2.bp.blogspot.com/-XDXSvi3AP5c/XLOEEOkmPQI/AAAAAAAAlgM/eqVonPeGjig0ETP9qSP37-hXNlUdpECGQCLcBGAs/s640/download.jpeg" title="7 consejos para crear logotipos en 2019" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
Encontré este artículo de&amp;nbsp;&lt;a href="https://www.customlogocases.com/blog/logo-design-tips/" target="_blank"&gt;Logo Design Guide:7 Tips Moving into 2019&lt;/a&gt;, donde nos platican de tips para crear logotipos en 2019. Es interesante ver como muchas de las tendencias de logotipos consisten en hacer muy sencillos los logos, o no ponerle mucha creatividad. El hecho de que sean así las tendencias no significa que tu próximo diseño tenga que ser igual. Es por eso que les comparto de esos 7 tips lo más importante que debes notar cuando empiezas con un diseño de logotipo.&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Parte 1: No olvides los fundamentos&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Conoce tu marca&lt;/b&gt;: siempre recuerda que el logotipo debe representar a tu marca, identificarse y ser único. Al final tu marca y logotipo deben transmitir el mismo mensaje&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Obten inspiración&lt;/b&gt;: busca nuevas formas, colores y mensajes, no te bases solo en las tendencias o en lo que todos están implementando justo ahora. Crea algo que sea moderno sin tener que ser repetitivo o parecido a algo que ya se ha visto antes.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Inicia un tablero de humor:&lt;/b&gt; usa servicios como Pinterest para empezar a ver imágenes de diferentes logotipos, tratando de identificar lo que te gusta de cada uno de ellos, y de ahí partir para crear algo adecuado para ti.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Investiga tu audiencia:&lt;/b&gt; identifica para quién es ese logotipo. No todos los logotipos funcionan para todas las personas, así que identifica qué tipo de personas verían tu logo y sentirían lo mismo que tu, y que otras a lo mejor pueden interpretar otro mensaje que quizá necesites corregir.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Parte 2: 7 tips para crear logotipos excelente&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Identifica el tipo de logo:&lt;/b&gt; los hay desde solo poner tipografía, hasta colocar mascotas o formas identificables&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Escoge una esquema de colores:&lt;/b&gt; usa colores que coincidan con tu marca y las sensaciones que transmite. No todos deben ser colores vivos, también puedes usar esquema de grises o blanco y negro.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Identifica un tipo de fuente:&lt;/b&gt; tanto las serifas o sin serifas o las personalizadas son importantes para dar más elegancia o más soltura al mensaje que das en el logo&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Haz un logo único:&lt;/b&gt; es imposible crear un logo que no se base en algo ya existente, pero trata que incluso tomando elementos que ya se han visto antes parezca nuevo.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;¿Cómo están desempeñándose otros diseños?:&lt;/b&gt; hay logotipos con doble mensaje en el diseño, o que tienen un toque característico que los diferencia muy claramente. Aprende a identificar qué es lo que caracteriza a un buen logo existente y de ahí parte para darle autenticidad al tuyo.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Manténlo simple y flexible:&lt;/b&gt; no te enredes tanto, siempre lo más simple va a ser lo mejor, pero trata de que se pueda adaptar a nuevos formatos y se vea fresco con el paso de los años.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Publica tu trabajo pero no esperes un éxito instantáneo:&lt;/b&gt; el éxito de un logo no depende de que sea admirado al instante, sino que empiece a ser reconocido a lo largo del tiempo, así que no te limites en medir el éxito de tu logo al instante.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://2.bp.blogspot.com/-XDXSvi3AP5c/XLOEEOkmPQI/AAAAAAAAlgM/eqVonPeGjig0ETP9qSP37-hXNlUdpECGQCLcBGAs/s72-c/download.jpeg" width="72"/></item><item><title>Comparando frameworks para front-end</title><link>http://www.vidamrr.com/2019/04/comparando-frameworks-para-front-end.html</link><category>frameworks</category><category>programacion</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 15 Apr 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-2619860621353271014</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://4.bp.blogspot.com/-WSBlIKLhdQs/XLN92Oyo-fI/AAAAAAAAlgA/wdmfuGAHraU4T8ZS8K71mrG_LXPx3gNVQCLcBGAs/s1600/1_Q2t-jgIzVx_w1Cyy1YlbNw.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Comparando frameworks para front-end" border="0" data-original-height="650" data-original-width="1100" height="378" src="https://4.bp.blogspot.com/-WSBlIKLhdQs/XLN92Oyo-fI/AAAAAAAAlgA/wdmfuGAHraU4T8ZS8K71mrG_LXPx3gNVQCLcBGAs/s640/1_Q2t-jgIzVx_w1Cyy1YlbNw.png" title="Comparando frameworks para front-end" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Me encuentro este interesantísimo artículo de &lt;a href="https://medium.freecodecamp.org/a-realworld-comparison-of-front-end-frameworks-with-benchmarks-2019-update-4be0d3c78075" target="_blank"&gt;FreeCodeCamp&lt;/a&gt;, en el cual comparan la velocidad y tamaño de algunos de los frameworks más famosos que hay para front-end. Si bien cada uno de ellos está enfocado en dar un resultado más o menos parecido, creo que muchos se han preguntado si estos frameworks son realmente un alivio para la gente que diseña aplicaciones web, o solo es un sobre costo que se añade por el hecho de tener un código más ordenado y con posibilidades de mantenerlo mejor.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
El análisis que les presento muestra algunas estadísticas que el autor tomó para medir el impacto de cada framework. En primer lugar el construyó la misma aplicación para los siguientes frameworks:&lt;/div&gt;
&lt;div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://3.bp.blogspot.com/-USb_61DbpXk/XLN9ULQXl-I/AAAAAAAAlfo/PYYCgyKrhxQ-10dqsNZIYrmrlQAX-s3XwCLcBGAs/s1600/1_JCpxiVgoupqzByhtlLv2LQ.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Comparando frameworks para front-end" border="0" data-original-height="1205" data-original-width="1600" height="482" src="https://3.bp.blogspot.com/-USb_61DbpXk/XLN9ULQXl-I/AAAAAAAAlfo/PYYCgyKrhxQ-10dqsNZIYrmrlQAX-s3XwCLcBGAs/s640/1_JCpxiVgoupqzByhtlLv2LQ.png" title="Comparando frameworks para front-end" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
Después de eso empezó con sus métricas.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Rendimiento&lt;/h2&gt;
&lt;div&gt;
Es quizá el punto más importante para todos. De nada sirve tener un framework si el rendimiento del mismo se ve afectado. Siempre hay que tener en cuenta que el rendimiento más óptimo debería ser el poder crear nuestras aplicaciones sin necesidad de un framework. Si acudimos a ellos es porque deberíamos suponer que mucho del &lt;i&gt;tunning&lt;/i&gt; de ese rendimiento ya lo trabaja ese framework. El resultado es como sigue:&lt;/div&gt;
&lt;div&gt;
&lt;a href="https://2.bp.blogspot.com/-ueOyWyDLX4I/XLN9TyMZfII/AAAAAAAAlfk/pXROGmTMCnoJkRaFY-khrnwtkFzMjckPQCLcBGAs/s1600/1_NIXLXDG15whg_NR8yzWjXQ.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="Comparando frameworks para front-end" border="0" data-original-height="897" data-original-width="1600" height="358" src="https://2.bp.blogspot.com/-ueOyWyDLX4I/XLN9TyMZfII/AAAAAAAAlfk/pXROGmTMCnoJkRaFY-khrnwtkFzMjckPQCLcBGAs/s640/1_NIXLXDG15whg_NR8yzWjXQ.png" title="Comparando frameworks para front-end" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
La mayoría de los frameworks corren por arriba de los 90 puntos, eso quiere decir que prácticamente en cuanto carga tu sitio o aplicación web, también lo hace el framework y sus componentes, a excepción de AngularJS que tiene el desempeño más bajo.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Tamaño&lt;/h2&gt;
&lt;div&gt;
El tamaño es la cantidad de kb que tiene que transferirse para poder cargar tu aplicación web. Entre más grande sea mayor va a ser el tiempo de carga.&lt;br /&gt;
&lt;a href="https://3.bp.blogspot.com/-JtILs5XEIKQ/XLN9TzrZYaI/AAAAAAAAlfg/qg_qobA-B-Yyk2WD-8weggxM3WkrAZXVwCLcBGAs/s1600/1_JT5MV8kiP2LSV0l19reLSQ.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="Comparando frameworks para front-end" border="0" data-original-height="1089" data-original-width="1600" height="434" src="https://3.bp.blogspot.com/-JtILs5XEIKQ/XLN9TzrZYaI/AAAAAAAAlfg/qg_qobA-B-Yyk2WD-8weggxM3WkrAZXVwCLcBGAs/s640/1_JT5MV8kiP2LSV0l19reLSQ.png" title="Comparando frameworks para front-end" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Mientras que hay frameworks que solo tienen 9kb de transferencia, hay otros como AngularJS que transfieren hasta 300kb. Esto en perspectiva podría parecer muchísimo, pero también dependiendo de la calidad de la conexión a internet es que se afecta mucho más esa transferencia.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
Líneas de código&lt;/h2&gt;
&lt;div&gt;
Las líneas de código es de los parámetros más importantes para un desarrollador. No tiene sentido que tengas que tener más líneas de código solo por usar un framework, si el objetivo inicial es justo simplificar ese proceso de creación con menos líneas.&lt;br /&gt;
&lt;br /&gt;
&lt;a href="https://3.bp.blogspot.com/-G5Cv3IkWW4E/XLN9UoxNEqI/AAAAAAAAlfs/bsyPFnpoVwkl35w8RiOlIC63pTsWLAK-gCLcBGAs/s1600/1_yjATvFxmv21w8Em_hxm7_w.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img alt="Comparando frameworks para front-end" border="0" data-original-height="1047" data-original-width="1600" height="418" src="https://3.bp.blogspot.com/-G5Cv3IkWW4E/XLN9UoxNEqI/AAAAAAAAlfs/bsyPFnpoVwkl35w8RiOlIC63pTsWLAK-gCLcBGAs/s640/1_yjATvFxmv21w8Em_hxm7_w.png" title="Comparando frameworks para front-end" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
En la imagen podemos ver que mientras para re-frame un proyecto requirió de 968 líneas de código, el mismo en Angular con ngrx y nx requirió 4,210 líneas de código, es decir, poco más de 4 veces, entonces aunque mucho código lo podrías generar y otro hacerlo tu, la realidad es que se entiende que más líneas de código podría aumentar el tamaño de tu proyecto, y en consecuencia hacerlo un poco más pesado.&lt;/div&gt;
&lt;h2&gt;
Conclusión&lt;/h2&gt;
&lt;div&gt;
Como mencionan en el artículo, no es muy fácil hacer comparaciones de peras con peras y manzanas con manzanas. Es importante notar que podría haber un sesgo pero los datos nos revelan mucha información. Lo que más me sorprende de esas gráficas es que por ejemplo, Vue, React y Angular, a pesar de que son los frameworks más usados, no son ni los más rápidos ni los más pequeños. Hay frameworks que son más ligeros, y si te interesa usar uno pero te interesa cuidar estas tres métricas la respuesta es que puedes optar por utilizar uno diferente a los 3 más populares.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://4.bp.blogspot.com/-WSBlIKLhdQs/XLN92Oyo-fI/AAAAAAAAlgA/wdmfuGAHraU4T8ZS8K71mrG_LXPx3gNVQCLcBGAs/s72-c/1_Q2t-jgIzVx_w1Cyy1YlbNw.png" width="72"/></item><item><title>11 Trucos para la consola de Javascript de Google Chrome</title><link>http://www.vidamrr.com/2019/04/11-trucos-para-la-consola-de-javascript.html</link><category>codigo</category><category>javascript</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 8 Apr 2019 09:00:00 -0500</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-7706273690201052247</guid><description>&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;a href="https://2.bp.blogspot.com/-KSLbuxKunr4/XKpYkHj8fkI/AAAAAAAAlec/xcinytGZfIESaavMwdqjfg7NXlyU95nwACLcBGAs/s1600/11-trucos-consola-chrome-javascript.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"&gt;&lt;img alt="11 Trucos para la consola de Javascript de Google Chrome" border="0" data-original-height="720" data-original-width="1280" src="https://2.bp.blogspot.com/-KSLbuxKunr4/XKpYkHj8fkI/AAAAAAAAlec/xcinytGZfIESaavMwdqjfg7NXlyU95nwACLcBGAs/s1600/11-trucos-consola-chrome-javascript.jpg" title="11 Trucos para la consola de Javascript de Google Chrome" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;br /&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
La consola de Google Chrome tiene muchas funcionalidades que nos pueden ayudar de forma muy interesante en nuestro debugging. En este post les presento algunos de los trucos más interesantes que seguramente les van a servir la próxima vez que tengan que desarrollar una aplicación con Javascript.&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/EO3CHe7BWuI/0.jpg" src="https://www.youtube.com/embed/EO3CHe7BWuI?feature=player_embedded" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;h2&gt;&lt;b&gt;Estilizar mensajes de consola&lt;/b&gt;&lt;/h2&gt;&lt;div&gt;&lt;a href="https://3.bp.blogspot.com/-RtoOolFtYYk/XKpYc17bafI/AAAAAAAAld4/by4u0ynuvhggbx-TD85XBeKJEWYoZDMgwCLcBGAs/s1600/consola-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="303" data-original-width="1279" src="https://3.bp.blogspot.com/-RtoOolFtYYk/XKpYc17bafI/AAAAAAAAld4/by4u0ynuvhggbx-TD85XBeKJEWYoZDMgwCLcBGAs/s1600/consola-01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Por defecto en la consola de Chrome los mensajes aparecen sin formato, pero si lo que necesitas es tener estilos para diferenciar ciertos mensajes basta con ingresar '%c' al inicio del mensaje de un console.log y colocar como un parámetro adicional los estilos CSS que quieres poner.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;script src="https://gist.github.com/marcosrivasr/c8f62a94e4d0c4bc11096dc1681599a8.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Mostrar JSON como tabla&lt;/h2&gt;&lt;div&gt;&lt;a href="https://3.bp.blogspot.com/-fDUQxs90aVM/XKpYc-ndTWI/AAAAAAAAld8/4L-uZyCo-i8qNdUnsdG72v12Fo2VxpaSACLcBGAs/s1600/consola-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="429" data-original-width="1278" src="https://3.bp.blogspot.com/-fDUQxs90aVM/XKpYc-ndTWI/AAAAAAAAld8/4L-uZyCo-i8qNdUnsdG72v12Fo2VxpaSACLcBGAs/s1600/consola-02.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;De forma sencilla podemos mostrar un JSON en formato de tabla con el siguiente script:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;script src="https://gist.github.com/marcosrivasr/7f60a8abd18b2d2847d81534225eb467.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Obtener las llaves de un arreglo&lt;/h2&gt;&lt;div&gt;&lt;a href="https://1.bp.blogspot.com/-OSNpzqQHCRI/XKpYdQjgXiI/AAAAAAAAleE/YtMNkC0sPSYwV8MPcB1LsRVZ64fduVAJgCLcBGAs/s1600/consola-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="152" data-original-width="626" src="https://1.bp.blogspot.com/-OSNpzqQHCRI/XKpYdQjgXiI/AAAAAAAAleE/YtMNkC0sPSYwV8MPcB1LsRVZ64fduVAJgCLcBGAs/s1600/consola-04.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Dado un arreglo se pueden extraer las llaves o claves de la siguiente forma:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;script src="https://gist.github.com/marcosrivasr/a6d45818827e4e8e4e86b8ef250089d5.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Obtener el elemento seleccionado&amp;nbsp;&lt;/h2&gt;&lt;div&gt;Podemos hacer referencia al elemento HTML seleccionado con el símbolo $0, y poder navegar por el historico de elementos seleccionados con $1, $2,etc&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Referenciar objetos HTML&amp;nbsp;&lt;/h2&gt;&lt;div&gt;Tradicionalmente usamos document.getElementById() o querySelector() para hacer referencia a objetos. En la consola de Chrome podemos hacer referencia usando la simbología de $('selector'), muy parecido a como se hace con jQuery, pero esta es una forma nativa de hacerlo en la consola de Chrome.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Obtener eventos configurados en elemento HTML&lt;/h2&gt;&lt;div&gt;&lt;a href="https://1.bp.blogspot.com/-2aaDGXtE4ck/XKpYdrIG7tI/AAAAAAAAleI/eetwjucwfTM2F7JfDf4gpFlOz5nr4DyWgCLcBGAs/s1600/consola-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="423" data-original-width="1068" src="https://1.bp.blogspot.com/-2aaDGXtE4ck/XKpYdrIG7tI/AAAAAAAAleI/eetwjucwfTM2F7JfDf4gpFlOz5nr4DyWgCLcBGAs/s1600/consola-05.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Se pueden ver de forma sencilla los eventos configurados en un elemento HTML así:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;script src="https://gist.github.com/marcosrivasr/ece2aa14561e0a6b51d4333912a5c713.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Monitorear todos los eventos sobre un elemento HTML&lt;/h2&gt;&lt;div&gt;&lt;a href="https://3.bp.blogspot.com/-U2AuDWjV2lw/XKpYeXTCfhI/AAAAAAAAleM/8FX1lkY2SEo3kkvxHxNmfc9HJZ_8A0QuwCLcBGAs/s1600/consola-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="574" data-original-width="1112" src="https://3.bp.blogspot.com/-U2AuDWjV2lw/XKpYeXTCfhI/AAAAAAAAleM/8FX1lkY2SEo3kkvxHxNmfc9HJZ_8A0QuwCLcBGAs/s1600/consola-06.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Se pueden monitorear todos los eventos sobre un elemento específico, usando dos comandos: monitorEvents() y unmonitorEvents()&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;script src="https://gist.github.com/marcosrivasr/c8957b00edd67671119096576f049cc6.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Medir tiempo de ejecución de un procedimiento&lt;/h2&gt;&lt;div&gt;&lt;a href="https://3.bp.blogspot.com/-fvbCMpU4l94/XKpYehTtZTI/AAAAAAAAleQ/E6qKZOW-3Dw2JUY7BSyzNGUSwBhTnnP6wCLcBGAs/s1600/consola-07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="81" data-original-width="680" src="https://3.bp.blogspot.com/-fvbCMpU4l94/XKpYehTtZTI/AAAAAAAAleQ/E6qKZOW-3Dw2JUY7BSyzNGUSwBhTnnP6wCLcBGAs/s1600/consola-07.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Puedes calcular el tiempo que tarda un procedimiento en ejecutarse usando dos funciones: console.time() y console.timeEnd()&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;script src="https://gist.github.com/marcosrivasr/757678b76490112343a74900b451114b.js"&gt;&lt;/script&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Mostrar todas las propiedades de un elemento HTML&lt;/h2&gt;&lt;div&gt;&lt;a href="https://3.bp.blogspot.com/-_Ss6_UKfMMg/XKpYfB1O_pI/AAAAAAAAleU/ZOrnIOHxt0Y-Zb5lc150lG37ptSXXoiXACLcBGAs/s1600/consola-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="583" data-original-width="974" src="https://3.bp.blogspot.com/-_Ss6_UKfMMg/XKpYfB1O_pI/AAAAAAAAleU/ZOrnIOHxt0Y-Zb5lc150lG37ptSXXoiXACLcBGAs/s1600/consola-08.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;Usando la función dir(selector) se puede mostrar todo lo que contiene un elemento HTML&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;h2&gt;Hacer referencia a la última expresión resultante&lt;/h2&gt;&lt;div&gt;&lt;a href="https://3.bp.blogspot.com/-vRMowNyh_Ns/XKpYfrOVayI/AAAAAAAAleY/re7uVmAveMEeHPnstK_nkzudK3wuRPirQCLcBGAs/s1600/consola-09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em; text-align: center;"&gt;&lt;img border="0" data-original-height="108" data-original-width="474" src="https://3.bp.blogspot.com/-vRMowNyh_Ns/XKpYfrOVayI/AAAAAAAAleY/re7uVmAveMEeHPnstK_nkzudK3wuRPirQCLcBGAs/s1600/consola-09.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;La última expresión en la consola también puede asignarse a una variable $_ la cual siempre tendrá el valor más reciente calculado dentro de la misma.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://2.bp.blogspot.com/-KSLbuxKunr4/XKpYkHj8fkI/AAAAAAAAlec/xcinytGZfIESaavMwdqjfg7NXlyU95nwACLcBGAs/s72-c/11-trucos-consola-chrome-javascript.jpg" width="72"/></item><item><title>11 ejemplos de sitios web con degradados</title><link>http://www.vidamrr.com/2019/04/11-ejemplos-de-sitios-web-con-degradados.html</link><category>inspiracion</category><category>sitios web</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Wed, 3 Apr 2019 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-7304720977588114197</guid><description>&lt;span class="fullpost"&gt;&lt;/span&gt;En esta ocasión les presento&lt;b&gt; 11 ejemplos de degradados en sitios web&lt;/b&gt; que pueden usar como referencia para sus proyectos. Los degradados, a pesar de lo que pudiéramos pensar, se expresan de varias formas, desde degradados tenues hasta con los colores muy definidos. No existe una regla específica para usarlos, y como vemos en cada uno de los sitios web, tampoco hay un límite siempre y cuando se combine adecuadamente con los demás elementos que componen el sitio.&lt;span class="fullpost"&gt;&lt;h2&gt;
&lt;span style="mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&lt;a href="https://dribbble.com/shots/4176694--1/attachments/955096" target="_blank"&gt;&lt;span style="mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-theme-font: major-fareast;"&gt;Gradient
Banner&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-5WrsE6_k7hU/XKEhulK9KSI/AAAAAAAAla8/qcV3qfK7P9s8yS_StZZbWKpZp5TspYfhQCLcBGAs/s1600/degradados-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://1.bp.blogspot.com/-5WrsE6_k7hU/XKEhulK9KSI/AAAAAAAAla8/qcV3qfK7P9s8yS_StZZbWKpZp5TspYfhQCLcBGAs/s640/degradados-01.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;


&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://www.atomic.ie/dna/manifesto/" target="_blank"&gt;The HR
Manifesto&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&amp;nbsp;&lt;a href="https://2.bp.blogspot.com/-l4HDj6WBDbQ/XKEhujsW5SI/AAAAAAAAla0/kREBeeP1XgMaDYM_bz2_IduoPZ9Rv2Q4wCLcBGAs/s1600/degradados-02.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://2.bp.blogspot.com/-l4HDj6WBDbQ/XKEhujsW5SI/AAAAAAAAla0/kREBeeP1XgMaDYM_bz2_IduoPZ9Rv2Q4wCLcBGAs/s640/degradados-02.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/5367995-Grabient-Landing-Page" target="_blank"&gt;Grabient Landing Page&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href="https://3.bp.blogspot.com/-q2IfOSPmzgY/XKEhupMQQaI/AAAAAAAAla4/31pgqV-MijMKXENt6gxQjCMzsDEdSzbIQCLcBGAs/s1600/degradados-03.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://3.bp.blogspot.com/-q2IfOSPmzgY/XKEhupMQQaI/AAAAAAAAla4/31pgqV-MijMKXENt6gxQjCMzsDEdSzbIQCLcBGAs/s640/degradados-03.jpg" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;


&lt;br /&gt;
&lt;br /&gt;


&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/5249168-D25-Video-Production/attachments/1139193" target="_blank"&gt;D25/Video Production&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;span style="color: #444444; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 12.0pt; letter-spacing: .4pt; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;a href="https://4.bp.blogspot.com/-VTi_hL91JFU/XKEhuxh2d4I/AAAAAAAAlbE/Hs_anvjIEN8sC7tqnVBxTa-xD6kGFTCbgCLcBGAs/s1600/degradados-04.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://4.bp.blogspot.com/-VTi_hL91JFU/XKEhuxh2d4I/AAAAAAAAlbE/Hs_anvjIEN8sC7tqnVBxTa-xD6kGFTCbgCLcBGAs/s640/degradados-04.jpg" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/5492890-Landing-centexus-Full-Preview/attachments/1188282" target="_blank"&gt;Centexus Landing Page&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href="https://2.bp.blogspot.com/-rqTtmqEssgc/XKEhvIzeWII/AAAAAAAAlbA/1Ug2iuFmhEswIvDnHMSgcZZew3kK6byGACLcBGAs/s1600/degradados-05.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://2.bp.blogspot.com/-rqTtmqEssgc/XKEhvIzeWII/AAAAAAAAlbA/1Ug2iuFmhEswIvDnHMSgcZZew3kK6byGACLcBGAs/s640/degradados-05.jpg" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;


&lt;br /&gt;
&lt;br /&gt;


&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://www.behance.net/gallery/74991069/Ninety-Nine-Seconds-Game-Prototype" target="_blank"&gt;Ninety Nine Seconds Game Prototype&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;br /&gt;


&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;span style="color: #444444; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 12.0pt; letter-spacing: .4pt; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;a href="https://1.bp.blogspot.com/-yKmJWVssJfY/XKEhv3nIFII/AAAAAAAAlbI/PKrom20WoIcnxT2qcDseynpTaw4ZlDpWQCLcBGAs/s1600/degradados-06.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://1.bp.blogspot.com/-yKmJWVssJfY/XKEhv3nIFII/AAAAAAAAlbI/PKrom20WoIcnxT2qcDseynpTaw4ZlDpWQCLcBGAs/s640/degradados-06.jpg" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/5475627-DIY-Course-Landing-Page/attachments/1184864" target="_blank"&gt;DIY Course Landing Page&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;span style="color: #444444; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 12.0pt; letter-spacing: .4pt; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;a href="https://3.bp.blogspot.com/-fZdQfxcavm0/XKEhwEJFGQI/AAAAAAAAlbM/SgBo3tyR0FQSWHMATB31NhdiBChedem9wCLcBGAs/s1600/degradados-07.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://3.bp.blogspot.com/-fZdQfxcavm0/XKEhwEJFGQI/AAAAAAAAlbM/SgBo3tyR0FQSWHMATB31NhdiBChedem9wCLcBGAs/s640/degradados-07.jpg" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/5374044-Natoni-Landing-Page" target="_blank"&gt;Natoni Landing Page&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&amp;nbsp;&lt;a href="https://4.bp.blogspot.com/-Xi06uREU4po/XKEhwei_WHI/AAAAAAAAlbQ/kx7Nh5hxVp8EniOdaTGJRIULUjUGC_b1ACLcBGAs/s1600/degradados-08.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://4.bp.blogspot.com/-Xi06uREU4po/XKEhwei_WHI/AAAAAAAAlbQ/kx7Nh5hxVp8EniOdaTGJRIULUjUGC_b1ACLcBGAs/s640/degradados-08.jpg" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;


&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/3087035-Bitframemedia-com-Logo" target="_blank"&gt;Bitframemedia Logo&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;span style="color: #444444; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 12.0pt; letter-spacing: .4pt; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;a href="https://1.bp.blogspot.com/-_uHQgeVxWDk/XKEhwfl2U0I/AAAAAAAAlbU/2NNhHCORDG09CDgpsp2HWPp__O8PVicBQCLcBGAs/s1600/degradados-09.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://1.bp.blogspot.com/-_uHQgeVxWDk/XKEhwfl2U0I/AAAAAAAAlbU/2NNhHCORDG09CDgpsp2HWPp__O8PVicBQCLcBGAs/s640/degradados-09.jpg" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/3955245--TinyMind-landing-page/attachments/903372" target="_blank"&gt;TinyMind Landing Page&lt;/a&gt;&lt;/h2&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;span style="color: #444444; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 12.0pt; letter-spacing: .4pt; mso-bidi-font-family: &amp;quot;Times New Roman&amp;quot;; mso-fareast-font-family: &amp;quot;Times New Roman&amp;quot;;"&gt;&amp;nbsp;&lt;a href="https://1.bp.blogspot.com/-FVgbPLUwM-c/XKEhwbsbIVI/AAAAAAAAlbY/AZzUcY2gXB8-e_daAKFiCFUUbkM3u-EzACLcBGAs/s1600/degradados-10.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://1.bp.blogspot.com/-FVgbPLUwM-c/XKEhwbsbIVI/AAAAAAAAlbY/AZzUcY2gXB8-e_daAKFiCFUUbkM3u-EzACLcBGAs/s640/degradados-10.jpg" width="640" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div style="margin-bottom: 18.75pt; vertical-align: baseline;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;a href="https://dribbble.com/shots/4046664-Mindfulness-App-Onboarding-Screens/attachments/927437" target="_blank"&gt;Mindfulness App Onboarding Screens&lt;/a&gt;&lt;/h2&gt;
&lt;div&gt;
&lt;a href="https://1.bp.blogspot.com/-Pi46Y3RFCpA/XKEhwzMe_EI/AAAAAAAAlbc/_Eq-c-PEVRUycNgm3H-W5Zh5udb1sRqTgCLcBGAs/s1600/degradados-11.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: &amp;quot;inherit&amp;quot;,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: 0.53px; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="510" data-original-width="850" height="384" src="https://1.bp.blogspot.com/-Pi46Y3RFCpA/XKEhwzMe_EI/AAAAAAAAlbc/_Eq-c-PEVRUycNgm3H-W5Zh5udb1sRqTgCLcBGAs/s640/degradados-11.jpg" width="640" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;/span&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-5WrsE6_k7hU/XKEhulK9KSI/AAAAAAAAla8/qcV3qfK7P9s8yS_StZZbWKpZp5TspYfhQCLcBGAs/s72-c/degradados-01.jpg" width="72"/></item><item><title>Cómo vender proyctos como freelancer</title><link>http://www.vidamrr.com/2019/04/como-vender-proyctos-como-freelancer.html</link><category>freelancer</category><category>Videos</category><category>vlog</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Tue, 2 Apr 2019 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-7392530535343830331</guid><description>  &lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://2.bp.blogspot.com/-bA5Y5yaGw1U/XKEdQACm9ZI/AAAAAAAAlao/I3fRDmMGEiU0nXkbNC6ZR9RAmRKSNoWTgCLcBGAs/s1600/como-vender-proyectos.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="Cómo vender proyctos como freelancer" border="0" data-original-height="710" data-original-width="1279" height="354" src="https://2.bp.blogspot.com/-bA5Y5yaGw1U/XKEdQACm9ZI/AAAAAAAAlao/I3fRDmMGEiU0nXkbNC6ZR9RAmRKSNoWTgCLcBGAs/s640/como-vender-proyectos.jpg" title="Cómo vender proyctos como freelancer" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;&lt;br /&gt;
&lt;/span&gt; &lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Para aquellos que empiezan su carrera de freelancer y no saben cómo iniciar su proceso de venta de proyectos, este es el video perfecto para ustedes. No es que sea un arte, pero sí se necesita cierta habilidad para poder vender nuestros proyectos, empezando con buscar a clientes potenciales.&lt;/span&gt;&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Una vez que sepas a qué tipo de clientes les vas a vender, necesitas saber tu modelo de negocios. En este video les comparto uno de ellos, que es de los más populares actualmente, que es el modelo de servicios. Si te quieres iniciar a vender proyectos la mejor forma es con un esquema de servicios, en donde distribuyes tus costos a lo largo de suscripciones con tus clientes, de tal forma que en vez de que te paguen una sola vez, te paguen constantemente para que tu les sigas ayudando de forma indefinida, o al menos hasta que ya no necesite tus servicios.&lt;/span&gt;&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;El modelo de suscripciones es usado por muchísimos servicios como Netflix o Spotify, y te permite a ti como desarrollador tener presencia con tus clientes de forma constante, a través de seguimiento de proyectos, de soporte o de otros beneficios que harán que te paguen también una cantidad pequeña mensualmente, y que al final para ti es un ingreso que solamente se distribuye a lo largo del tiempo.&lt;/span&gt;&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;&lt;br /&gt;
&lt;iframe width="1278" height="719" src="https://www.youtube.com/embed/oJ1cjBh-Qog" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;/span&gt;   </description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://2.bp.blogspot.com/-bA5Y5yaGw1U/XKEdQACm9ZI/AAAAAAAAlao/I3fRDmMGEiU0nXkbNC6ZR9RAmRKSNoWTgCLcBGAs/s72-c/como-vender-proyectos.jpg" width="72"/></item><item><title>3 habilidades importantes que necesitas como desarrollador</title><link>http://www.vidamrr.com/2019/04/3-habilidades-importantes-que-necesitas.html</link><category>consejos</category><category>developers</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Mon, 1 Apr 2019 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-8686447655425288595</guid><description>&lt;div style="text-align: center;"&gt;
&amp;nbsp;&lt;a href="https://3.bp.blogspot.com/-Ouln6vefoFg/XKERuGZm1oI/AAAAAAAAlaQ/bAw5ieluSS4GHmc1tbqnu1vlV0oAINBbQCLcBGAs/s1600/1_Fx02PelDSr5cU6bqA5-0UQ.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="531" data-original-width="800" height="424" src="https://3.bp.blogspot.com/-Ouln6vefoFg/XKERuGZm1oI/AAAAAAAAlaQ/bAw5ieluSS4GHmc1tbqnu1vlV0oAINBbQCLcBGAs/s640/1_Fx02PelDSr5cU6bqA5-0UQ.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;La escuela
nos enseña ciertas habilidades y tecnologías que nos deben servir en nuestra
vida, sin embargo, queda en nosotros seguir el aprendizaje necesario para
seguir conociendo lo más nuevo en nuestro entorno. Para un estudiante de
ingeniería que desea tener un trabajo como desarrollador o ingeniero en
sistemas la cosa no es diferente. Hay habilidades y tecnologías que no
aprenderá en la escuela, y es importante desarrollarlas y aprenderlas, porque
van a servir de una forma u otra.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Vamos a
aprender cuáles son esas habilidades que no nos enseñan en la escuela, pero de
todas formas necesitamos aprender.&lt;/span&gt;&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;&lt;/span&gt;&lt;br /&gt;
&lt;a name='more'&gt;&lt;/a&gt;&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
Git&lt;/h2&gt;
&lt;div style="text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-nDnj9iYVs8E/XKERt5LBQ9I/AAAAAAAAlaM/-7gY-IniDEoLxvj0P6X_A34MD-lPVVXmQCLcBGAs/s1600/0_VHgxUC9DIEzgJ2s7.png" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: Times New Roman; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="665" data-original-width="800" height="266" src="https://1.bp.blogspot.com/-nDnj9iYVs8E/XKERt5LBQ9I/AAAAAAAAlaM/-7gY-IniDEoLxvj0P6X_A34MD-lPVVXmQCLcBGAs/s320/0_VHgxUC9DIEzgJ2s7.png" width="320" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Git es una de
las tecnologías que deberías conocer sin importar si te la enseñan o no en la
escuela. Desarrollar la habilidad de versionar tu código, hacer modificaciones
y darle un mantenimiento adecuado por medio de branches es una habilidad que,
aunque pareciera sorprendente, no todos los desarrolladores saber hacer.
Conocer Git te va a dar no una ventaja, sino te va a dar lo indispensable que
se necesita en cualquier rol de desarrollo y que no te dicen que lo necesitas
hasta que lo tienes que ocupar.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Comunicación&lt;/span&gt;&lt;/h2&gt;
&lt;div style="text-align: center;"&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;&lt;a href="https://3.bp.blogspot.com/-IIY1s_VonUo/XKERt1Dt0EI/AAAAAAAAlaI/Jq0A_Bl97nIXn3KYnM5BGLTTFPNXSo2rACLcBGAs/s1600/0_69KR6RhuQeo_LdEM.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: Times New Roman; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="667" data-original-width="1000" height="426" src="https://3.bp.blogspot.com/-IIY1s_VonUo/XKERt1Dt0EI/AAAAAAAAlaI/Jq0A_Bl97nIXn3KYnM5BGLTTFPNXSo2rACLcBGAs/s640/0_69KR6RhuQeo_LdEM.jpg" width="640" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Aprender a
comunicarse es una habilidad que no nos enseñan en ningún lado. Cada persona,
organización y yo diría que hasta región donde estemos tiene su propia forma de
comunicarse, pero es indispensable saber hacerlo para poder obtener resultados.
Un problema común de comunicación es saber pedir las cosas, quizá que algún
colaborador nos ayude con nuestro código. Algo tan simple como eso puede ser interpretado
como que no tienes los conocimientos, o tienes flojera, o quieres que alguien
más haga tu trabajo.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Un ejemplo
de comunicación efectiva para pedir apoyo en el ejemplo anterior es que se
maneje un mensaje de contexto. Si en vez de ir directo a pedir apoyo, se
explica todo lo que ya hiciste para llegar al punto donde no puedes avanzar,
quizá la otra persona en vez de negarte el apoyo pueda entender que no estás
pidiendo ayuda por flojo, sino porque ya recorriste una serie de pasos y nada
funcionó. Esto le da un incentivo de poder serte útil y a la vez no crea que
está haciendo tu trabajo.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Escribir&lt;/span&gt;&lt;/h2&gt;
&lt;div style="text-align: center;"&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;&lt;a href="https://1.bp.blogspot.com/-5cTmGXb8AWM/XKERttjxqfI/AAAAAAAAlaE/Zzqlr5BiT0Eh3tdfoZsgVy7KgGM-0Lt5wCLcBGAs/s1600/0_9om4XqZe7QBtANDL.jpg" imageanchor="1" style="-webkit-text-stroke-width: 0px; color: #0066cc; font-family: Times New Roman; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; margin-left: 1em; margin-right: 1em; orphans: 2; text-align: center; text-decoration: underline; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px;"&gt;&lt;img border="0" data-original-height="667" data-original-width="1000" height="426" src="https://1.bp.blogspot.com/-5cTmGXb8AWM/XKERttjxqfI/AAAAAAAAlaE/Zzqlr5BiT0Eh3tdfoZsgVy7KgGM-0Lt5wCLcBGAs/s640/0_9om4XqZe7QBtANDL.jpg" width="640" /&gt;&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/span&gt;&lt;/div&gt;
&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;Para muchos
escribir es plasmar sus pensamientos en un correo o una carta, y la realidad es
que no. Escribir correctamente tiene que ver con saber transmitir un mensaje a
un grupo de personas, y que esas personas tengan el mismo significado al leer
tu mensaje. No todos podemos tener las estructuras gramaticales para elaborar
textos complejos, pero sí deberíamos tener la capacidad de redactar un mensaje
de tal forma que la intención que tenga se pueda transmitir, y nosotros
obtengamos una respuesta.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span lang="ES-MX" style="mso-ansi-language: ES-MX;"&gt;A nivel de
código es importante saber documentar nuestros proyectos, saber documentar
errores y poder pedir apoyo usando la técnica de comunicación que mencioné en
el punto anterior. Dar mensajes claros en pocas palabras siempre va a ser el
objetivo al momento de escribir, ya que la gente no perderá tiempo leyendo un
texto sin saber qué es lo que estás queriendo decir o pedir.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://3.bp.blogspot.com/-Ouln6vefoFg/XKERuGZm1oI/AAAAAAAAlaQ/bAw5ieluSS4GHmc1tbqnu1vlV0oAINBbQCLcBGAs/s72-c/1_Fx02PelDSr5cU6bqA5-0UQ.jpg" width="72"/></item><item><title>Github deja de dar soporte a jQuery</title><link>http://www.vidamrr.com/2019/03/github-deja-de-dar-soporte-jquery.html</link><category>analisis</category><category>github</category><category>noticias</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Wed, 6 Mar 2019 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-1533217770853032898</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-70jNJELpYI4/XHw1vsFgUjI/AAAAAAAAlRY/4M0_1SQdTDc8WkBxv8t2cavEl6O8B9CegCLcBGAs/s1600/github-mata-jquery.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="716" data-original-width="1263" height="181" src="https://1.bp.blogspot.com/-70jNJELpYI4/XHw1vsFgUjI/AAAAAAAAlRY/4M0_1SQdTDc8WkBxv8t2cavEl6O8B9CegCLcBGAs/s320/github-mata-jquery.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;
Github deja de dar soporte a jQuery, con lo que pasa a ser otro servicio que empezó a usar jQuery para poder dar servicio a todos sus usuarios y repositorios, pero ahora ya está dejando de lado la librería para poder usar frameworks modernos que no dependan tanto de una sola implementación.&lt;/div&gt;
&lt;div&gt;
En este video les explico las ventajas de migrar de jQuery, y los retos a los que se está enfrentando el equipo de desarrollo de Github al querer modernizar su sitio.&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/dJR5HOcNZBc/0.jpg" src="https://www.youtube.com/embed/dJR5HOcNZBc?feature=player_embedded" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;div&gt;
No olviden &lt;a href="https://www.youtube.com/channel/UCOD6LXgeBoeiUZTsPLdG-0g" target="_blank"&gt;suscribirse a mi canal de Youtube&lt;/a&gt; para ver todo el contenido adicional que se genera para los desarrolladores y diseñadores web&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://1.bp.blogspot.com/-70jNJELpYI4/XHw1vsFgUjI/AAAAAAAAlRY/4M0_1SQdTDc8WkBxv8t2cavEl6O8B9CegCLcBGAs/s72-c/github-mata-jquery.jpg" width="72"/></item><item><title>10 sitios web con animaciones impresionantes</title><link>http://www.vidamrr.com/2019/03/10-sitios-web-con-animaciones.html</link><category>inspiracion</category><category>sitios web</category><author>noreply@blogger.com (Marcos Rivas Rojas)</author><pubDate>Tue, 5 Mar 2019 09:00:00 -0600</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-228839924391317640.post-1231637077759164180</guid><description>&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://4.bp.blogspot.com/-t0HqOHyqtko/XHwxjLSWWeI/AAAAAAAAlRM/9VYKglkew9AUpzasFXDZyiNenGtSHY8uQCLcBGAs/s1600/animaciones-web-portada.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="248" data-original-width="480" height="330" src="https://4.bp.blogspot.com/-t0HqOHyqtko/XHwxjLSWWeI/AAAAAAAAlRM/9VYKglkew9AUpzasFXDZyiNenGtSHY8uQCLcBGAs/s640/animaciones-web-portada.gif" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
Se pueden hacer diferentes tipos de animaciones en un sitio web, desde las básicas con CSS, las complejas usando Javascript, pero los sitios web que les presento llevan a otro nivel este tema. Les presento &lt;b&gt;10 sitios web con animaciones impresionantes,&lt;/b&gt; donde combinan CSS, SVG, WebGL y otras técnicas de animación para crear estos increíbles efectos de navegación en los sitios web&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://2019.lesanimals.digital/en" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Les Animals&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-iesLlPet4-I/XHwq-Fe74bI/AAAAAAAAlQQ/0cKT_MBaz-cGyl55vAkS2A2jdT5zM2lxACLcBGAs/s1600/sitios-web-animaciones-01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="506" data-original-width="844" height="380" src="https://2.bp.blogspot.com/-iesLlPet4-I/XHwq-Fe74bI/AAAAAAAAlQQ/0cKT_MBaz-cGyl55vAkS2A2jdT5zM2lxACLcBGAs/s640/sitios-web-animaciones-01.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://cheshirecat.inthehiddencity.com/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: underline; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;The Hunt for the Cheshire Cat&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-jdd7dPysxSg/XHwq-PqOFoI/AAAAAAAAlQU/MaZnE6Ji2sQfaxzLcWt6vVeJ4zDImBnRQCLcBGAs/s1600/sitios-web-animaciones-02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="510" data-original-width="848" height="384" src="https://2.bp.blogspot.com/-jdd7dPysxSg/XHwq-PqOFoI/AAAAAAAAlQU/MaZnE6Ji2sQfaxzLcWt6vVeJ4zDImBnRQCLcBGAs/s640/sitios-web-animaciones-02.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="http://www.60fps.fr/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;60 FPS&lt;/a&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://4.bp.blogspot.com/--eVIgp1iHWc/XHwq-U5bZ6I/AAAAAAAAlQY/WdDQ7xg5UHosZdwV_1xoQ59efq42SSgmwCLcBGAs/s1600/sitios-web-animaciones-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="508" data-original-width="845" height="384" src="https://4.bp.blogspot.com/--eVIgp1iHWc/XHwq-U5bZ6I/AAAAAAAAlQY/WdDQ7xg5UHosZdwV_1xoQ59efq42SSgmwCLcBGAs/s640/sitios-web-animaciones-03.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;a href="https://spire.com/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Spire&lt;/a&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://4.bp.blogspot.com/-fPbw9_3eNCA/XHwq-k97nrI/AAAAAAAAlQc/MItbRw6c34c-ztDCxJ2w2q42Ulu56GwMQCLcBGAs/s1600/sitios-web-animaciones-04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="504" data-original-width="842" height="382" src="https://4.bp.blogspot.com/-fPbw9_3eNCA/XHwq-k97nrI/AAAAAAAAlQc/MItbRw6c34c-ztDCxJ2w2q42Ulu56GwMQCLcBGAs/s640/sitios-web-animaciones-04.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://www.nicocherubin.com/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: underline; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Nico Cherubin&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-AwQB8ToDhQ0/XHwq-1L68MI/AAAAAAAAlQk/k0v5qBzooBAthPrdo9sT9pNMCCjlrhSPgCLcBGAs/s1600/sitios-web-animaciones-05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="503" data-original-width="842" height="382" src="https://2.bp.blogspot.com/-AwQB8ToDhQ0/XHwq-1L68MI/AAAAAAAAlQk/k0v5qBzooBAthPrdo9sT9pNMCCjlrhSPgCLcBGAs/s640/sitios-web-animaciones-05.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: left;"&gt;
&lt;a href="https://pelizzari.com/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Pelizzari Studio&lt;/a&gt;&lt;b&gt;&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;u&gt;&lt;/u&gt;&lt;sub&gt;&lt;/sub&gt;&lt;sup&gt;&lt;/sup&gt;&lt;strike&gt;&lt;/strike&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://2.bp.blogspot.com/-Hgw5Xohng6k/XHwq-xsuZtI/AAAAAAAAlQg/pfeefeDDSNEDQPpo_UIxUvpKDlxUoExsACLcBGAs/s1600/sitios-web-animaciones-06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="502" data-original-width="843" height="380" src="https://2.bp.blogspot.com/-Hgw5Xohng6k/XHwq-xsuZtI/AAAAAAAAlQg/pfeefeDDSNEDQPpo_UIxUvpKDlxUoExsACLcBGAs/s640/sitios-web-animaciones-06.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp;&lt;a href="https://activetheory.net/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Active Theory&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://4.bp.blogspot.com/-Zxib0kKLH3E/XHwq_AqgRCI/AAAAAAAAlQo/U1_mIHH-iNcN_UOglIQzOn328uXqhmjgQCLcBGAs/s1600/sitios-web-animaciones-07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="502" data-original-width="838" height="382" src="https://4.bp.blogspot.com/-Zxib0kKLH3E/XHwq_AqgRCI/AAAAAAAAlQo/U1_mIHH-iNcN_UOglIQzOn328uXqhmjgQCLcBGAs/s640/sitios-web-animaciones-07.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp;&lt;a href="https://teatrlalka.pl/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Teatr Lalka&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://3.bp.blogspot.com/-IS51Enr1cNc/XHwq_q0IEAI/AAAAAAAAlQs/HI9jaKsxPPgttAKPyoet9shNBmky6p6YACLcBGAs/s1600/sitios-web-animaciones-08.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="508" data-original-width="843" height="384" src="https://3.bp.blogspot.com/-IS51Enr1cNc/XHwq_q0IEAI/AAAAAAAAlQs/HI9jaKsxPPgttAKPyoet9shNBmky6p6YACLcBGAs/s640/sitios-web-animaciones-08.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp;&lt;a href="https://deanbradshaw.com/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Dean Bradshaw Photography&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/-Ej276eumaUg/XHwq_pjMPBI/AAAAAAAAlQw/y2zlGr3wGfY1DegYVAG0zyC0M2Xx8nkGgCLcBGAs/s1600/sitios-web-animaciones-09.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="508" data-original-width="843" height="384" src="https://1.bp.blogspot.com/-Ej276eumaUg/XHwq_pjMPBI/AAAAAAAAlQw/y2zlGr3wGfY1DegYVAG0zyC0M2Xx8nkGgCLcBGAs/s640/sitios-web-animaciones-09.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
&amp;nbsp;&lt;a href="http://nlf.geex-arts.com/" rel="noopener noreferrer" style="-webkit-text-stroke-width: 0px; border-bottom-color: currentColor; border-bottom-style: none; border-bottom-width: 0px; border-image-outset: 0; border-image-repeat: stretch; border-image-slice: 100%; border-image-source: none; border-image-width: 1; border-left-color: currentColor; border-left-style: none; border-left-width: 0px; border-right-color: currentColor; border-right-style: none; border-right-width: 0px; border-top-color: currentColor; border-top-style: none; border-top-width: 0px; box-sizing: border-box; color: #f68320; font-family: inherit; font-size: 100%; font-style: inherit; font-variant: normal; font-weight: inherit; letter-spacing: 0.5px; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; outline-color: invert; outline-style: none; outline-width: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; text-align: left; text-decoration: underline; text-indent: 0px; text-transform: none; vertical-align: baseline; white-space: normal; word-spacing: 0px;" target="_blank"&gt;Next Level Fairs&lt;/a&gt;&lt;br /&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;a href="https://1.bp.blogspot.com/--ndnQOz0NJU/XHwq_65lONI/AAAAAAAAlQ0/oJ32kWEDs3APnRa7BEq5yaZErOoOPECtwCLcBGAs/s1600/sitios-web-animaciones-10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" data-original-height="506" data-original-width="847" height="382" src="https://1.bp.blogspot.com/--ndnQOz0NJU/XHwq_65lONI/AAAAAAAAlQ0/oJ32kWEDs3APnRa7BEq5yaZErOoOPECtwCLcBGAs/s640/sitios-web-animaciones-10.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class="separator" style="clear: both; text-align: center;"&gt;
&lt;br /&gt;&lt;/div&gt;
</description><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" height="72" url="https://4.bp.blogspot.com/-t0HqOHyqtko/XHwxjLSWWeI/AAAAAAAAlRM/9VYKglkew9AUpzasFXDZyiNenGtSHY8uQCLcBGAs/s72-c/animaciones-web-portada.gif" width="72"/></item></channel></rss>