Categoría: Programacion

Involucionando por diversión

El domingo me puse a inventar algo ¿Qué tal si hacía una versión Old Style del blog? No me refiero a una página HTML 1.0 sino algo distinto, en modo exclusivamente texto, algo sólo para joder pero por divertirme en mi tiempo de ocio.

Bueno, con esa premisa empecé a buscar cómo podía hacer para pixelar una foto de una nota, la de portada, y transformarla en HTML puro. Una gronchada porque es perder intencionalmente toda compresión posible y hacer un pixel art de mucho más código por pixel :D pero... lo hice!

Aquí les cuento un poco la idea, sé que es delirante y no tiene fin alguno, pero que me entusiasmó para tirar un poco de código al viejo estilo...

Seguir leyendo el post »

Yoast SEO plugin y el consumo de recursos

Seguramente es otro de esos posts nerdada pero que me generó mucha curiosidad cuando tuve que resolver el problema.

La cuestión es así, un servidor de un amigo que tiene un Wordpress con muchas visitas, entre los famosos plugins de WP hay uno que usan muchos que se llama Yoast SEO que básicamente se encarga de administrar el SEO de cada artículo y componente del sitio.

El plugin funciona muy bien y ayuda a las visitas pero tiene un problemita: jamás fue pensado para un sitio enorme...

Seguir leyendo el post »

Contar líneas de código no sirve para nada

Esta historia es parte del folklore informático de los años 80s cuando dentro de Apple a un manager se le ocurrió que era buena idea contar líneas de código para medir la performance de trabajo de los programadores.

Todo aquél que realmente programa sabe que eso es una estupidez, a veces se suman muchas líneas, otras pocas, pero a quien realmente molestaba era a Bill Atkinson quien era el autor de Quickdraw y el diseñador de la interfaz de la Apple Lisa.

Bill tenía motivos de sobra para odiar esto ya que muchas de las cosas que él hacía era optimizar sus programas para que funcionaran más rápidos y eficientes, no acumular líneas al pedo.

Así pues llegó un viernes en el que debía pasar su reporte de líneas y escribió "-2000 líneas de código". Obvio! Había optimizado y ganado 2000 líneas menos! eso es mucho mejor que sumar otras miles!

Pocas semanas después el requerimiento de cargar cuántas líneas de código habían escrito se descartaba ¿cómo podrías medir cuan bien programaba si te restaban líneas optimizando código?

Esto me recuerda a un trabajo que tuve una vez donde el nuevo manager pretendía que carguemos minuto a minuto qué estábamos haciendo. Como si fuésemos operarios de una fábrica que empezábamos con la tarea X y seguíamos en esa durante 8 horas sin detenernos ni a un café ni a pensar ni, mucho menos, googlear una idea o respuesta.

Para los managers no existen bloqueos, es todo productividad y creen que se mide en líneas de código: Atkinson te cargaría -2000. Eso es programar.


Via Folklore.org

Seguir leyendo el post »

Object-fit , una pequeña solución de CSS para problemas típicos

Como se imaginarán este es un posteo medio nardo para aquellos que se encuentran con los dilemas de maquetar un sitio y que se vea como uno quiere. Como estaba anoche laburando con LinksDV Versión 3.0 (yah!) me encontré con un dilema: los thumbnails quedaban como el culo si la foto original no estaba en una proporción ideal.

Entonces tenía dos opciones, si tomo una imagen y creo el thumbnail puedo crear un "crop", una porción de esta en la proporción que yo quiera. Pero eso implica más procesamiento, una cosa es escalar un tamaño pero si encima me ponía a cropear cada imagen de referencia de cada enlace eso iba a tener un costo ¿Existe alguna solución por CSS? Y la respuesta, para mi sorpresa, es que sí, existe y hace rato! Se llama object-fit.

Seguir leyendo el post »

Todo lo que hay que tener en cuenta antes de programar una función para compartir un enlace

El otro día me puse a rehacer el código de LinksDV.com, quiero renovarlo, simplificarlo y dejarlo bien simple y fácil de usar.

Así que me puse a programar desde cero una funcionalidad muy básica: compartir un enlace. Tal vez para la mayoría esto pueda resultar trivial pero ahora les voy a explicar TODO lo que hay que hacer para sencillamente compartir un enlace, no, no son pocas cosas.

Pero quería contarlo para que vieran todo el proceso mental que requiere un desarrollador y que nunca es el caso de "apreta dos botones y sale", no, el software es complejo y siempre falla.

Seguir leyendo el post »

Soporte para emojis en el blog y utf8mb4 en MySQL

Es tan sólo un detalle menor pero para aquellos que, como yo, tienen un sitio web desde hace mucho tiempo una de las cosas más complejas es lograr que todo siga funcionando durante tanto tiempo y, además, soporte cosas nuevas o que habían quedado afuera en tu diseño original.

Aquí en el blog el soporte para emojis era... cómo decirlo... inviable :D pero me di cuenta dónde estaba el problema: era en la conexión a la base de datos.

Resulta que el UTF8 implementado en MySQL no es precisamente un UTF8 completo, por default es un utf8mb3 que sólo permite un set limitado de caracteres. Para una base de datos es mejor si la idea es manejar lenguajes de uso cotidiano y ahorrar bytes pero gracias a los Emoji uno necesita el set completo de posibilidades.

El cambio era sencillamente modificar las tablas y agregarle a cada campo soporte para utf8mb4. Pero eso no alcanzaba y me di cuenta recién hoy, primer día del año, cuando los Emojis ya son algo habitual (aunque a mi me importaran un bledo, claro), y como desde cualquier teléfono uno puede dejar un comentario con emojis el blog ya era hora que lo soportara :D

He aquí que no sólo había que cambiar las tablas sino la forma en la que el CMS se conecta a la base de datos, avisarle que no todo era UTF8 sino utf8mb4. En mi caso era avisarle que la conexión se hacía de esa forma

 @mysqli_set_charset($this->db_connect_id"utf8mb4");

Y listo! ?‍♂️☝?? en fin, malditos emojis.

Seguir leyendo el post »

Mini Tip: X Forwarded For en HTTP

Es un pequeño detalle pero sucede muy a menudo cuando estás detrás de un servidor proxy en tu web server: no tenés idea qué IP tiene el cliente.

La razón de esto es que el proxy toma esa posición que resulta ser tu propio servidor, así que todos los clientes terminan entrando con el supuesto mismo IP o así lo asume el Apache.

En PHP la variable de servidor que toma mal este valor es REMOTE_ADDR y el problema es que si tenés algún filtro o método que requiere saber específicamente a qué cliente le estás afectando no podrías hacerlo.

Peero, existe una solución, una variable que se incluyó primero en Squid es HTTP_X_FORWARDED_FOR para que uno tenga forma de saber cual fue el origen verdadero. Si esta variable tiene valores significa que estamos detrás de un proxy, por ejemplo NGINX, y para conocer la IP real vamos a tener que reemplazar con estas pocas líneas de código:

if ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
	$http_x_headers = explode( ',', $_SERVER['HTTP_X_FORWARDED_FOR'] );

	$_SERVER['REMOTE_ADDR'] = $http_x_headers[0];
}

Y listo, ahora REMOTE_ADDR tiene el valor correcto.

Seguir leyendo el post »

Cómo es la inyección de código malicioso en un sitio

Hace unos días estábamos revisando sitios por mantenimiento y uno en particular tenía un tráfico excesivo, obviamente cuando eso sucede hay que prestar atención y no era para menos.

El sitio no tenía actualizaciones hacía más de dos años, un Wordpress, más allá de las versiones desactualizadas los sitios con plugins suelen tener huecos no tanto por el sitio en sí (WP se ha vuelto muy seguro los últimos años) sino por todos esos plugins de developers que no tienen tantos parámetros de seguridad.

A partir de estos huecos se inyectan pequeñas porciones de código para escalar permisos y modificar el sitio, éste es uno de esos tantos casos que podrían afectar tu sitio sin que te dieras cuenta...

Seguir leyendo el post »

Abuso vía Tor de la encuesta, diversión para nardos

Estas cosas me encantan, primero porque me ayudan a aprender más en un escenario que no es crítico, una encuesta en mi blog? Es genial porque podés testear algo con una masa crítica de usuarios relevante y cero problema con un cliente :D

Bueno, lo que pasó era algo que estaba tratando de provocar hace un tiempo y, tuve la suerte, se dio: alguien quiso fraguar los resultados de una encuesta en el blog como si fuere importante.

Aquí les cuento en detalle qué hizo y cómo se puede mitigar un "ataque" tan tonto como este.

Seguir leyendo el post »

Ajustar el tamaño de miles de imagenes en un servidor

Imaginen este escenario, durante X tiempo estuvieron almacenando imagenes de miles de sitios pero tan sólo querían tener una especie de thumbnail. Tomaron la foto default de cada página pero los tamaños no son precisamente lo que uno esperaba.

Te dejaste estar y ahora tenés una carpeta en el servidor con 1GB de fotos de las cuales sólo necesitabas unos pocos pixeles de cada una, un lindo lío de espacio en servidor ¿Cómo resolverlo?

Bajarlas todas y tirar un batch en Photoshop? esa sería la resolución más cabeza de termo posible, lo ideal es... hacerlo en el servidor!

Seguir leyendo el post »

145 Noticias (15 páginas, 10 por página)