Archivo de la etiqueta: web

Docker 101 #2: puertos y volúmenes de un contenedor

docker-image

En el artículo anterior comenzamos con una breve introducción a docker, vimos su instalación, configuración e incluso lanzamos un par de servidores web nginx usando contenedores, en esta ocasión explicare un poco más acerca de los puertos y los volúmenes.

Puertos

Ok, lo primero que explicare será el mapeo de puertos, abrimos una terminal y ejecutamos el siguiente comando:

$ sudo docker run --name servidor-web -p 80:80 nginx

El parametro –name sirve para asignarle un nombre al contenedor.

El parámetro -p sirve para realizar el mapeo de puertos y recibe una cadena en el formato PUERTO-HOST:PUERTO-CONTENEDOR, es decir, del lado izquierdo definimos el puerto que nuestro sistema operativo le asignara al contenedor de docker y del lado derecho el puerto en el que realmente se ejecuta el servicio dentro del contenedor, en este caso nginx (suena un poco confuso al inicio así que regresa y léelo de nuevo hasta que lo entiendas)

En el comando anterior estamos mapeando el puerto 80 de nuestra computadora con lo que sea que este corriendo en el puerto 80 del contenedor, es por eso que si vamos a http://localhost veremos el servidor web en ejecución 🙂

nginx

En la consola desde donde ejecutaste el comando podrás ver las peticiones hechas al servidor dentro del contenedor.

docker-cli

Al ejecutar el comando y correr el contenedor abras notado que la consola se queda bloqueada por el servidor web, para evitar eso podemos correr el contenedor en modo detach con el parámetro -d, esto ejecutara el contenedor en segundo plano.

$ sudo docker run -d --name servidor-web -p 80:80 nginx

docker_detach

Observa como tan pronto como ejecutamos el comando docker nos devuelve el control de la terminal, cuando ejecutas contenedores de esta forma no olvides que para eliminarlos primero tienes que recuperar su id, el cual puedes obtener haciendo:

$ sudo docker ps

y en la primera columna encontraras el ID del contenedor que después deberás de eliminar usando sudo docker rm [CONTAINER-ID], si lo prefieres un tip muy útil para borrar todos los contenedores que hayas creado es ejecutar:

$ sudo docker stop $(sudo docker ps -a -q)
$ sudo docker rm $(sudo docker ps -a -q)

El primer comando detiene todos los contenedores que estén en ejecución y el segundo los elimina todos (no puedes eliminar un contenedor que este en ejecución).

Puedes correr todas los contenedores que quieras (o necesites) de nginx en diferentes puertos y con diferentes nombres y cada uno será una instancia completamente diferente del servidor web 🙂
containers

Observa como cada uno de los servidores web corren en un puerto diferente.

multi-docker

Volúmenes

Los volúmenes en docker pueden ser definidos con el parámetro -v y nos ayudan a resolver el problema de la persistencia de datos en los contenedores, un volumen puede ser visto como un mapeo entre un directorio de nuestra computadora y un directorio en el sistema de archivos del contenedor, regresemos a nuestro contenedor de nginx, ¿cómo le hacemos para mostrar un sitio web en nginx en lugar de la página por default?

Lo primero que haremos será crear una carpeta en donde colocaremos el código fuente de nuestro sitio web html (por ahora no trabajaremos con nada dinamico), por ejemplo website

website

Ejecutamos el siguiente comando mapeando el contenido de /home/alevsk/dev/sitio-web hacia /usr/share/nginx/html que es el directorio por default que utiliza nginx para servir contenido a Internet.

$ sudo docker run -d --name sitio-web -v /home/alevsk/dev/sitio-web:/usr/share/nginx/html -p 80:80 nginx

La próxima vez que visitemos http://localhost/ veremos nuestro sitio web corriendo.

nginx-web

Puedes replicar este contenedor con el contenido del sitio web tantas veces como quieras, es muy util en un escenario donde necesitas varios ambientes para pruebas, desarrollo, etc.

Eso es todo por ahora, en el siguiente tutorial aprenderemos a crear nuestras propias imágenes de docker (dockerizar aplicaciones), después de eso veremos otra herramienta bastante útil llamada docker-compose para facilitar la orquestación de aplicaciones que utilizan múltiples contenedores.

Saludos y happy hacking.

Platica: Contraseñas seguras

password-security

Esta charla se titula Contraseñas seguras Tips y tecnologías que te ayudaran a mantener seguras tus cuentas en Internet y la impartí en mayo para la comunidad Morelia Code en el polifórum digital de Morelia.

En esta ocasión hablamos acerca del uso de las contraseñas en nuestra vida cotidiana, mostramos algunas técnicas actuales utilizadas por los atacantes para hacerse con las mismas y damos consejos sobre como crear contraseñas seguras, también mostramos ejemplos de software manejador de contraseñas para minimizar el riesgo de que nuestros passwords sean robados por usuarios maliciosos.

No tengo experiencia por que nadie me contrata y nadie me contrata por que no tengo experiencia

ideas

Seguramente muchos de ustedes en algún punto de sus vidas han escuchado esa frase, ya sea por que la han dicho ustedes o la han escuchado por parte de un amigo / conocido, en mi opinión personal se trata de una de las negaciones mas grandes en las que puede caer un recién egresado.

Ahora que estoy próximo a graduarme (ha sido un largo viaje y recuerdo cuando escribí mi primer publicación en este blog) estoy teniendo una nueva perspectiva de las cosas. Es común que a los estudiantes en su semestre de graduando las universidades los lleven a ferias de empleo, esto con la finalidad de que vayan viendo como es el “mundo real”, lo cual en mi opinión es bastante arrogante. La dinámica es sencilla y muy parecida en todas las instituciones, todos juntos llegamos y todos juntos nos vamos.

El fenómeno mas común que he observado es que cuando los estudiantes van hacia la feria de empleo todos van emocionados y llenos de energía, por el contrario, cuando regresan pareciera que esa energía y euforia desapareció y no por cansancio o fatiga física. Se escuchan platicas que dicen cosas como:

  • ¿Como te fue?, ¿Si te entrevistaron?, ¿Dejaste tu cv?
  • No we, me fije en los requerimientos del puesto y pedían X años de experiencia en X, Y y Z, entonces no me anime.
  • ¿Enserio? Pero que “oso” como nos piden experiencia si apenas vamos a salir de la carrera.

Entonces los estudiantes terminan mas decepcionados del viaje que emocionados de ver lo que les depara la “vida real”, y tenemos que hacer algo (estudiantes e instituciones) para cambiar la situación.

Por otra parte, y de lo que les quiero hablar realmente, mucha gente no me cree cuando les digo que conseguí mi primer trabajo formal en Twitter (no en Twitter la empresa :p), pero sucedió así:

Me encontraba en primer año de la carrera de Ingeniería en Tecnologías Computacionales y había tenido que darme de baja a mitad del segundo semestre por un motivo personal.

Ya en mi casa y reflexionando sobre la vida en un feed de desarrolladores en Twitter vi que alguien solicitaba un programador de PHP y pensé, tengo 3 meses mas 2 de vacaciones hasta que comience el nuevo semestre y de todas maneras tenia planeado buscar un trabajo, así que mande un reply al tweet solicitando mas información, la persona se puso en contacto conmigo mediante un email y me comento varias cosas técnicas, entre ellas que el trabajo se trataría de desarrollar sitios web en Joomla (un manejador de contenidos muy popular de la época), sencillamente ocupaban a alguien con experiencia en Joomla, y entonces pensé:

“Rayos, nunca en la vida he desarrollado para Joomla, solo se hacer sitios web sencillos usando PHP y HTML, y he utilizado muy poco MySQL

En ese mismo momento me puse a investigar mas a fondo sobre Joomla, ¿Que era?, ¿Para que servía?, ¿Como se instalaba?, ¿Como se utilizaba?, etc. mi objetivo en ese momento era tener un dominio teórico de esa tecnología.

Cuando le respondí el correo a la persona le explique la situación, le hable sobre que hasta el momento solo sabia hacer cosas sencillas, pero que había estado investigando todo acerca de Joomla y que incluso había instalado la plataforma en mi computadora y estaba haciendo bastantes pruebas, fui honesto con el y lo agregue a Skype.

Cuando la persona me respondió, y hasta la fecha no se si es verdad, me dijo lo siguiente: “Pues estuve revisando varios perfiles, pero el tuyo me pareció el mas interesante por lo que escribiste en el correo” y en la ultima línea decía, y cito “me la voy a rifar contigo”. Los siguiente fue que acordamos sueldos y horarios de trabajo y después tuve que firmar algunos contratos de confidencialidad. Aquí termina la anécdota :).

El punto es, y ahora que han pasado 5 años lo veo claramente, si yo hubiera tomado la decisión equivocada, la de rendirme y ni siquiera intentarlo debido a mi falta de conocimiento, en la actualidad estaría en una situación muy diferente, si me preguntan en que momento comenzó mi carrera profesional les enseñaría este articulo y les señalaría ese párrafo donde explico como empezó todo.

Una vez que termine de trabajar con esa empresa (5 meses) ellos mismos me recomendaron con la siguiente, y después vino otra, y muchas mas, al punto es que en estos últimos 6 años he trabajado con por lo menos 10 empresas diferentes. Empresas en donde desarrolle proyectos que al principio me sobrepasaban, pero que estudiando e investigando salieron y lo mejor de todo es que además de la retribución económica (que es muy importante) tuve la oportunidad de aprender muchísimas tecnologías nuevas.

Algunas personas me dicen que tuve muchísima suerte, pero yo creo que la suerte no tuvo nada que ver en esto, mas bien fueron las ganas de demostrarme a mi mismo que puedo resolver cualquier problema que me pongan enfrente.

Además de trabajar en esas empresas yo nunca me he detenido en aprender por mi cuenta y desarrollar proyectos personales, el beneficio principal es mi propio aprendizaje, si me encuentro trabajando en una empresa de desarrollo, ¿Por qué no aprendería de seguridad informática?, Si estoy en una empresa de seguridad, ¿Por qué no me compraría una tableta wacom y aprendería a dibujar en illustrator?, tus conocimientos no se casan con el puesto en el que te desempeñas :), a lo que voy es que algunas cosas las he aprendido por simple gusto pero también muchas otras por necesidad, por ejemplo generar factura electrónica en el portal del SAT XD.

Si tu lector, no haz tenido la misma “suerte” que yo de trabajar con 10 empresas y chorrosientosmil proyectos diferentes y estas próximo a graduarte, vas a mitad de tu carrera o empezando, el mejor consejo que te podría dar seria empezar a aprender, aprender, aprender y preguntar, y no solo de tu área, si no de muchas otras mas, el otro día en mi universidad unas personas de Bancomer estaban desarmando un cajero automático en plena escuela, yo iba corriendo a clase pero se me hizo curioso, así que me acerque a ellos y primero me presente, después les dije que yo estaba interesado en aprender eso que ellos estaban haciendo por que me gustaba la seguridad informática, al principio se me quedaron viendo serios pero después muy amables me recomendaron un par de lecturas, sitios de internet y uno de ellos me dio su tarjeta, sobra decir que después de eso fui corriendo a Google a buscar esquemas y manuales de cómo funcionan los distintos modelos de cajeros automáticos.

Para terminar, tus conocimientos como estudiante son tan validos como los de un ingeniero / licenciado graduado y viviendo la “vida real”, si quieres experimentar presión proponte a ti mismo una fecha para dominar una tecnología o completar un proyecto personal y CUMPLELA, muchas cosas que harías contratado en una empresa las puedes comenzar a ir haciendo tu en la comodidad de tu casa, no te esperes a graduarte, solo es cuestión de investigar, de esta manera estas generando experiencia real que te servirá en el presente y en el futuro, y cuando menos lo esperes tendrás un portafolio muy completo, incluso antes de ser graduado :).

eCommerce para mi negocio

ecommerce_banner

eCommerce es sin duda una palabra bastante recurrente hoy en día, se trata de la facilidad que dan las empresas y marcas a los consumidores para poder adquirir sus productos de manera electrónica, es decir, por medio de una página web o una aplicación móvil. Cada día son más los sitios que nos ofrecen esta opción de compra, sin embargo por lo menos aquí en México la cultura del eCommerce no es tan popular como quisiéramos y eso en mi opinión se debe a distintos factores, pero los más importantes vendrían siendo:

Tarjetas de crédito

Esta es la primer limitante con la que nos podemos encontrar a la hora de hacer compras por Internet, realmente son muy pocas las familias mexicanas que cuentan con algún medio de pago electrónico, sin embargo las empresas se han dado cuenta de esto y han tomado cartas en el asunto, es bastante común ver hoy en día que las tiendas en línea han agregado nuevas opciones de pago, ya no es solo PayPal y pago con tarjeta de crédito / debito, como por ejemplo depósitos en efectivo en tiendas como OXXO aquí en México, y esto es bueno porque la mayoría de la población ubica este tipo de establecimientos y es bastante sencillo enviar pagos por medio de ellos. Un ejemplo muy claro de este sistema serían los Riot Points en el juego de League of Legends.

Escepticismo

Generalmente cuando se habla de eCommerce se asume que hablamos de empresas o marcas grandes que dan servicio a clientes de clase media, sin embargo y con las herramientas que tenemos los desarrolladores hoy en día es posible montar plataformas muy económicas para pequeñas empresas, se puede utilizar software libre para manejar carritos de compras y eso abarata mucho los costos. ¿Pero qué está pasando ahora? He notado que ahora la desconfianza de comprar en línea ya no recae solo en el usuario final, aquella persona que está frente a la pantalla de su computadora temerosamente dando clics sobre los productos de una página y piensa dos veces antes de escribir los datos de su tarjeta de crédito (y con justa razón), sino también en las propias marcas y empresas, pues ofrecerles un nuevo medio de ganar dinero por precios tan económicos parece raro para ellos.

Hace aproximadamente mes me tocó vivir una situación en donde una solución de eCommerce me hubiera favorecido bastante, resulta que quería mandar a hacer un par de posters, posters de videojuegos y anime para un proyecto, en la ciudad donde resido hay un establecimiento especializado en ese tipo de productos así que los contacte por medio de Facebook, me indicaron que les enviara las imágenes por medio del chat a lo cual respondí que eso no era posible, ya que las imágenes perdían calidad, entonces me pidieron de favor que si se las podía llevar a su local guardadas en una memoria USB y que ahí mismo las podía pagar. Ya no quise seguir discutiendo sobre el asunto, tenía el día libre y me desplace como 40 minutos hasta donde estaban ellos. Yo como cliente me hubiera evitado todo el recorrido y el gasto de tiempo si la tienda hubiera contado con un portal eCommerce similar al de linio chile, hubiera sido tan sencillo como enviarles las imágenes por medio de la plataforma, realizar el pago en línea y un par de semanas después recibir mi producto en casa o ir a recogerlo, eso último fue lo que le explique y le propuse al encargado cuando llegue para entregarle las fotografías, se me hizo una buena idea porque ellos ya contaban con página de internet ósea ya tienen presencia en línea.

El dueño, quien ahora es amigo mío, me explico que prefería el dinero en efectivo, al estilo de la vieja escuela, yo le explique todavía más que debería de aprovechar el hosting donde tiene su página web y expandir sus servicios a personas como yo (gente que prefiere comprar en línea para evitar, filas, etc). Al final ya no valió la pena darle más vueltas al asunto, esto me hizo darme cuenta que además de educar a los consumidores para que sean más abiertos a las transacciones digitales los gobiernos también deben de capacitar a las pequeñas empresas, pues al final creo que si este tipo de compras se volvieran más populares sería una situación de ganar – ganar.

#FelizDiaGamer Lo que he jugado este año

#DiaGamer #FelizDiaGamer #DiaDelGamer
Hoy me entere que existe el día del Gamer (de alguna forma no me sorprende), investigando un poco encontré que se lleva celebrando desde 2008 y gracias a una revista española de videojuegos y al apoyo de toda la comunidad gamer :). Ser gamer es algo relativamente nuevo para mi (2 años para acá), ya que en el pasado no tenia una buena maquina donde jugar y mis laptops casi nunca tenían espacio disponible en disco xD, pero eso cambio cuando conseguí una ASUS G750JW, esta maquina al menos en el momento que estoy escribiendo, puede correr todos los juegos de gama alta :). Teniendo ahora una computadora en donde puedo jugar “de todo” por fin pude probar todos esos juegos de steam que acumule durante los veranos y que nunca pude jugar por mi “deficit” de hardware xD. Pero bueno mi intención en este post es compartir algunos de los juegos con los que me he divertido / frustrado / enojado / llorado en este ultimo año xD.

La saga Call of Duty aka CoD

Call-of-Duty-Black-Ops-Multiplayer-Reveal-Hands-On

Call of Duty, indudablemente un shooter multiplayer que recuerdo con una sonrisa en mi rostro, este juego es muy especial para mi ya que en algún momento de mi carrera, en la universidad donde estudio, se convirtió en el juego predilecto para la gente de sistemas, CoD fue un juego que ayudo a romper el hielo entre los estudiantes veteranos y los de nuevo ingreso, ayudo a crecer el circulo social y a formar lazos de amistad (y aveces de desprecio hacia aquellos que cobardemente usaban Grenade Launcher aka tubo xD), asi que una de las primeras cosas que hice al tener mi laptop de gaming fue instalar y jugar Call of Duty, era hermoso, a diferencia de mi antiguo “cacharro” ahora podía tirar y que me tiraran granadas de humo sin que el juego crasheara o los frames se bajaran entre 5-10, las armas parecían mas realistas y el juego definitivamente te hacia sentir en un campo de batalla :).

MOBAS: League of Legends y Dota 2

league_of_legends_header

Por alguna razón los mobas (Multiplayer online battle arena) son un tipo de juego bastante adictivo para mi, inclusive hubo una epoca en donde los jugaba todos los dias. Dota 2 lo jugue por que la mayoría de mis amigos parecían venir de una larga estirpe de doteros (dota 1) en mi ciudad, entonces les gustaba bastante ese juego, por otra parte League of Legends se convirtió rápidamente en mi moba favorito, los personajes, sus mecánicas y habilidades me agradaron bastante e incluso hoy en día lo sigo jugando de vez en cuanto, LoL es un juego que en lo personal aprendí a amar y odiar al mismo tiempo, me ha hecho reír, maldecir, llorar y frustrarme xD. La gente que frecuenta estos juegos entenderá el por que :p.

Este es Lee sin, mi personaje favorito de league of legends

Dark Souls

league_of_legends_header

En un intento por ser un poco menos casual (what r u casul?) en cuanto al gaming un amigo me introdujo en el mundo de dark souls, solo diré que es uno de los mejores juegos que he jugado en mi vida gamer, el concepto de un juego extremadamente difícil así como la historia del mismo resulto bastante interesante para mi y me engancho, como muchos otros morí incontables veces en el juego pero al final logre terminarlo (dark souls 1, ahora estoy comenzando con el 2 xD) y fue una gran satisfacción.

league_of_legends_header

Survival Horror: DayZ e Infestation

tumblr_mqxpuoeFrJ1rd90z0o1_1280
Los juegos de Survival Horror por si solos son buenos, pero si además le agregas interacción con otras personas en línea creas una experiencia totalmente diferente y difícil de describir, es el caso de juegos como Dayz o Infestation donde juegas en un mundo poblado de zombis y tienes que abrirte paso en las diferentes ciudades recolectando recursos (comida, armas, municiones) o cualquier otra cosa que te pueda llegar a servir, el verdadero problema aqui no son los zombis sino los demás jugadores humanos xD, si hay algo que aprendes después de jugar DayZ, es que no puedes confiar en nadie que no conozcas físicamente en el mundo real, en nadie!!!, Pareciera pues que DayZ e Infestation son juegos diseñados para que las personas demuestren su verdadera naturaleza humana xD, muchas veces con mis amigos llegamos a capturar prisioneros humanos y obligarlos a comer comida podrida en el juego o cosas así, por diversión xD.

Fighters: Mortal Kombat, Street Fighter y SkullGirls

Mortal_Kombat_3

Los juegos de peleas siempre son una buena opción a la hora de divertirnos entre amigos, son juegos rápidos que permiten que todo mundo tenga oportunidad de jugar, Mortal Kombat, Street Fighter y SkullGirl son de mis favoritos en mi repertorio de Steam, aunque en lo personal soy muy malo en SkullGirls en Mortal Kombat he aprendido a dominar a 3 personajes con los que casi siempre gano y logre terminar el juego en la maxima dificultad.

MMORPG: World of Warcraft y Tera

south_park_wow

Aun que no lo crean hubo una época en donde jugué bastantes MMORPG, World of Warcraft, Ragnarok, Tibia, LOTRO (Lord Of The Rings Online), etc. Los MMORPG son juegos bastante adictivos y mas si los juegas con amigos, te puedes llegar a meter bastante en el personaje lo que lo hace aun mas divertido 🙂 en lo personal World of Warcraft me hizo ver que hay toda una economia que gira detras de ese juego, cuando uno esta metido mucho en ese mundo no es raro encontrar sitios en Internet donde contratan gente (la mayoría chinos) para que farmen (conseguir) oro 24/7, el cual es vendido después por dinero real, incluso existen divisas y tazas de cambio entre dólares y oro xD, por la parte de programación solo diré que WoW me hizo adentrarme en el mundo del scripting con LUA, programe un par de plugins que me ayudaban a jugar de forma mas eficiente (así lo veo yo), después de jugar WoW estuve jugando un rato Tera con uno de mis mejores amigos de la universidad @the_kiq, trolleabamos bastante y conseguíamos cosas gratis por que teníamos personajes femeninos xD.

Arcade: OSU!

OSU!, mi juego casual favorito xD, incluso dedique una entrada en este blog para hablar un poco sobre el. OSU! es el tetris del mouse, me refiero es que es de esos juegos que te permiten jugar y no pensar en nada mas, solo existes tu y el juego, pone tu mente en blanco y te ayuda a relajarte. La comunidad de OSU! es gigantesca y muy amigable, tiene beatmaps para todos los gustos musicales, OSU! es definitivamente un juego que nunca te aburrirá.

Voy a parar aquí por ahora, por que si publicara todo lo que he jugado nunca acabaría xD, mejor tratare de disfrutar el #DiaGamer
salu2