viernes, 16 de octubre de 2020

Solución temporal bug de renderizado en Chrome sobre Ubuntu

 En recientes días, al parecer a apartir de un update, Chrome y también Chromium empezaron a renderizar mal la pantalla. Secciones repetidas, oscuras o distorcionadas empezaron a aparecer, algunas veces limitando la navegación.

Encontré que el problema se puede soslayar deshabilitando la aceleración de video por hardware, y reiniciando el navegador.



martes, 23 de junio de 2020

Para administrar las extensiones en Chrome


https://www.maketecheasier.com/hide-chrome-extensions-icons/


  • Para Chrome v76 en adelante
  • Entrar a chrome://flags
  • Buscar Extensions Toolbar Menu
  • Elegir la opción Enable
  • Aceptar recargar el navegador
  • Ahora, bajo el ícono de Extensiones (con forma de puzzle) se puede habilitar/deshabilitar pin para mostrar una extesión en el toolbar, entre otras funciones.

viernes, 12 de junio de 2020

Cómo mostrar en web la imagen almacenada en un blob

Actualizado: 2020/07/03

Cuando se quiere guardar la imagen asociada a un registro, aparecen dos alternativas:
  • Subir la imagen a un directorio público y guardar en el registro su url
  • Guardar la imagen en una base de datos. Esto se consigue convirtiendo el binario en un texto hexadecimal (base64).
Cada una tiene sus pros y sus contras. Personalmente yo siempre prefiero la primera, pero quizás haya ocasiones donde sea preferible la segunda.

Como sea, supongamos que estamos ante una base de datos SQL Server con registros que contienen las imágenes que queremos mostrar.

Un query a esa base de datos devolverá algo como:

<Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 48 00 48 00 00 ff fe 00  ... >

O, equivalentemente:

{ "type": "Buffer", "data": [ 255, 216, 255, 224,...] }

Entonces, cómo se llega a mostrarla en web?

Si la data está como string

// Tener una imagen
var myImage = document.querySelector("#my-image");
// Tener la data
var data = 'FFD8FFE000104A46494600...';
// Convertir el string a bytes
var bytes = new Uint8Array(data.length / 2);
for (var i = 0; i < data.length; i += 2) {
    bytes[i / 2] = parseInt(data.substring(i, i + 2), /* base = */ 16);
}
// Convertir los bytes a un blob
var myBlob = new Blob([bytes], { type: "image/jpg" });
// Obtener el url
var url = URL.createObjectURL(myBlob);
// Actualizar el url de la imagen
myImage.src = url;

Si la data está como string (más simple)

// Tener una imagen
var myImage = document.querySelector("#my-image");
// Tener la data
var data = 'FFD8FFE000104A46494600...';
// Obtener el url
var url = "data:image/png;base64," + data;
// Actualizar el url de la imagen
myImage.src = url;

Si la data ya está como array numérico

// Tener una imagen
var myImage = document.querySelector("#my-image");

// Tener la data
var data = [255, 216, 255, 224, ...];

// Convertir la data a bytes
var bytes = new Uint8Array(data);

// Convertir los bytes a un blob
var myBlob = new Blob([bytes], { type: "image/jpg" });

// Obtener el url
var url = URL.createObjectURL(myBlob);

// Actualizar el url de la imagen
myImage.src = url;


Conclusión

  • Para tener el url de la imagen necesitamos un Blob creado con javascript
  • Para tener ese blob necesitamos un Uint8Array (array de bytes) que contenga nuestra data
  • Si nuestra data es un string, primero hay que transformarlas a un array de bytes
  • Si nuestra data es un array numérico, también hay que transformarlas a un array de bytes, pero se hace automáticamente con el constructor de Uint8Array.

sábado, 7 de marzo de 2020

Windows: Cómo obtener el product id de un paquete instalado

Para desinstalar un paquete usando una utilidad especial, se me requirió el product id.

Para encontrarlo, usé Power Shell: WIN + R, powershell

PS C:\Users\rulo> get-wmiobject Win32_Product | Format-Table IdentifyingNumber, Name, LocalPackage -AutoSize

lunes, 2 de marzo de 2020

Goole Maps: Cómo hallar la medida y el tiempo de una ruta?

En Android. Me resultó algo difícil dar con un camino a una funcionalidad de Googe Maps que me parece debería ser más evidente.

Espero que esta nota te facilite la vida :)

Caso

Digamos que queremos averiguar cuanto tomaría ir en auto desde el Pentagonito, en San Borja, hasta el Centro Cultural Peruano Japonés, en Jesús María.

Es relativamente sencillo si estás en el Pentagonito: Ubicas en el mapa el CCPJ como destino y luego click en Indicaciones. Pero qué pasa si no estás en el Pentagonito sino en otro lugar, por ejemplo San Miguel?

Primero, pide Indicaciones para ir desde donde estás (Tu ubicación) hasta el primer punto (Pentagonito).



Luego, en el menú contextual (señalado con los tres puntos en vertical) elige Agregar parada.


Luego, agrega el segundo punto (el CCPJ).


Finalmente, elimina el punto 0 (Tu ubicación) haciendo click en la x al lado.


De ese modo, queda la ruta que nos interesa.

viernes, 28 de febrero de 2020

¿Cómo creo una foto 3D en Facebook?

En el facebook del celular, hay la opción Foto 3D cuando quieres publicar un post. Eliges una foto de la galería y facebook usa un algoritmo para darle el efecto.

En el facebook de escritorio, subes mifoto.jpg y mifoto_depth.jpg (o png si gustas) al mismo tiempo, y con esa convención facebook hace la magia.

Y si tienes un smarphone con cámara modo retrato parece que el algoritmo de facebook lo procesa mejor.

Referencias:


viernes, 21 de febrero de 2020

Cumpleaños 91 de Chespirito

Aniversario 91 del nacimiento de Roberto Gómez Bolaños, el popular Chespirito, creador de personajes como El Chavo del Ocho y El Chapulín Colorado.

Google le dedica un doodle.


Lecturas populares