El problema de algunas fotos de catálogos de productos es que, en varias ocasiones, los formatos, los tamaños y los encuadres no coinciden, esto significa un problema a la hora de automatizar la generación de miniaturas del mismo tamaño, debido a que necesitamos conocer la posición del objeto principal en cada caso para recortar y escalar la imagen en torno a este.

Esta vez utilizando la librería muesli/smartcrop programamos una herramienta que nos ayuda a ubicar el elemento principal en cada foto para generar una miniatura e integrar a esta un logotipo en la esquina inferior izquierda, de manera automática.

Originally published at https://umarquez.c0d3.mx on August 3, 2020.


Esta vez utilizando #Golang Go programo una herramienta que extrae los enlaces de una URL definida, esto puede ser la base de una herramienta de mapeo o análisis de sitios web o un scrapper capaz de navegar por todo un sitio extrayendo información.

Originally published at https://umarquez.c0d3.mx on July 15, 2020.


Programo un servidor web muy sencillo que sirve archivos locales desde un directorio definido, este puede ser optimizado de varias maneras y mejorado para soportar SSL y otras funcionalidades, yo lo utilizo para probar aplicaciones WASM de forma local.

Originally published at https://umarquez.c0d3.mx on July 12, 2020.


Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/31-wasm

WebAssembly

WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable target for compilation of high-level languages like C/C++/Rust, enabling deployment on the web for client and server applications.

WebAssembly (abreviado Wasm) es un formato binario de instrucciones para una máquina virtual de tipo stack. Wasm está diseñado como objetivo portable para la compilación de lenguajes de alto nivel como C/C++/Rust, haciendo posible la implementación web de aplicaciones cliente y servidor.

Es importante aclarar que WebAssembly no busca sustituir a , es más bien cercano a la evolución de tecnologías…


Herencia & Patrón Composite | Inheritance & Composite Pattern

Si GO (Golang) es un lenguaje Orientado a Objetos, ¿por qué no existe la herencia como la conocemos en otros lenguajes?

Go, a diferencia de estos lenguajes, no la necesita pues la filosofía de este opta por la composición de estructuras a partir de otras estructuras en lugar de una relación jerárquica descendente; en el caso de la Herencia, una nueva clase puede extender las funcionalidades de otra e incluso, en algunos lenguajes, de varias super-clases, siendo esta nueva clase “hija” de las super-clases que hereda y por tanto pudiendo ser considerada del mismo tipo de dato que cualquiera de…


Desenfoque de caja | Box blur

Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/29-box-blur

A box blur (also known as a box linear filter) is a spatial domain linear filter in which each pixel in the resulting image has a value equal to the average value of its neighboring pixels in the input image.

Un desenfoque de caja (también conocido como caja de filtro lineal) es un filtro lineal de dominio espacial en donde cada píxel de la imagen de salida es el promedio resultante de los píxeles vecinos (incluyendo el pixel que se procesa) de la imagen de entrada.

https://en.wikipedia.org/wiki/Box_blur

De igual forma que hicimos en el tramado, aplicaremos un filtro…


Escaneo de puertos TCP | TCP port scanning

Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/28-tcp-port-scanning

A port scanner is an application designed to probe a server or host for open ports. Such an application may be used by administrators to verify security policies of their networks and by attackers to identify network services running on a host and exploit vulnerabilities.

Un escáner de puertos es una aplicación diseñada para detectar puertos abiertos en un servidor o equipo conectado a la red. Como aplicación es utilizada por administradores para verificar las políticas de seguridad de la red, y por atacantes para identificar los servicios que se encuentra en ejecución y poder explotar posibles vulnerabilidades.


Partrónes de diseño: Builder | Builder design pattern

Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/27-builder-pattern

Se trata de un patrón creacional que nos ayuda a instanciar objetos complejos centralizando y reciclando los pasos para construir dichos objetos en una interfaz común, evitando reescribirlos en cada paquete o función que lo requiera.

Se compone de dos elementos principales

  • DIRECTOR: Quien se encarga de ejecutar cada proceso de instanciamiento.
  • BUILDER: La interfaz común que encapsula el proceso de creación de cada instancia

Pensemos en una línea de producción capaz de crear diferentes productos, por ejemplo, una máquina para fabricar galletas de diferentes tipos y sabores; podríamos pensar en los pasos generales que se necesitan para…


Shell a través de WebSocket | Shell through WebSocket

Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/26-ws-shell

Volvemos a los temas de seguridad, en esta ocasión vamos a tratar de levantar una shell y conectarla a un WebSocket con el fin de poder administrar un servidor tratando de evadir cualquier firewall que nos impida conectarnos de forma directa al puerto ssh, o como forma alternativa de contar con una consola para realizar tareas automatizadas.

Por supuesto deberemos proteger el acceso a la consola, pues no queremos que cualquiera que descubra el end-point tenga acceso a ella; para esto vamos a utilizar una técnica llamada web knocking que es una variante del port knocking, la cual…


Tramado | Dithering

Repo: https://github.com/umarquez/100DaysOfC0D3/tree/master/25-dithering

El tramado es una técnica usada en computación gráfica para crear la ilusión de profundidad de color en imágenes con una paleta de colores limitada (reducción de color). En una imagen tramada, los colores no disponibles en la paleta se aproximan por una difusión de píxeles de color dentro de la gama de colores disponibles.

https://es.wikipedia.org/wiki/Tramado

Si, este es un capítulo más de “Jugando con píxeles”; en esta ocasión vamos a agregar esta funcionalidad al proyecto pasado [20/100] Segundo proyecto: Repintado, pero antes, vamos a tratar de explicar en qué consiste el tramado.

Como ya explicamos en capítulos…

Uriel Márquez

C0d3r, musician, composer www.c0d3.mx co-founder

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store