miércoles, 6 de enero de 2021

AutoControl en Chrome para tener el CRTL+TAB que queremos

 CTRL + TAB es un atajo que encuentro bastante útil para volver a la anterior pestaña, en Visual Studio Code, por ejemplo. Y también en Firefox.

Sin embargo, en Chrome, aunque muy demandado, no hay un atajo así por default.

Pero se puede inatlar la extensión AutoControl y definir esa acción para ese evento (además de muchas otras):



viernes, 1 de enero de 2021

e y los números complejos

e, es la base de los logaritmos neperianos. Es decir ln e = 1.

Numéricamente e = 2.718281828...

Una definición es que es el límite superior del área bajo la curva f(x) = 1 / x entre 1 y 3, tal que esa área sea 1.



Aprendí estas relaciones:

  • Un número complejo a + bi se puede escribir como cos(θ) + i sen(θ), donde θ es el ángulo del vector (a, b) en el plano complejo.
  • Ese número complejo cos(θ) + i sen(θ) también se puede escribir como e^(iθ) 

El curioso número 6174 - La constante de Kaprekar

El matemático D. R. Kaprekar encontró esta curiosa constante

Si se toma un número de 4 cifras (como 2021), y se las ordena de mayor a menor (para obtener 2210), y de menor a mayor (para obtener 0122), y se resta ese número menor del mayor (para obtener 2210 - 0122 = 2088), se está realizando lo que se llama la operación de Kaprekar (en honor al matemático que la inventó).

Si se usa este resultado para volver a hacerle la operación de Kaprekar, resulta que en unos cuantos pasos (a lo más 7), siempre se llega a 6174, que es conocida como la constante de Kaprekar.

2021: 2210 - 0122 = 2088

2088: 8820 - 0288 = 8532

8532: 8532 - 2358 = 6174

6174: 7641 - 1467 = 6174

La observación se cumple para cualquier número de 4 cifras que no tenga las 4 cifras iguales. Y siguiendo la convención de completar con ceros a la izquierda para mantener siempre un numeral de cuatro cifras.

Algo similar ocurre para los números de 3 cifras. En ese caso, la constante es 495.

221: 221 - 122 = 099

099: 990 - 099 = 891

891: 981 - 189 = 792

792: 972 - 279 = 693

693: 963 - 369 = 594

594: 954 - 459 = 495

495: 954 - 459 = 495

Para números de 2 cifras, o de más de 4 cifras, no se llega a una única constante, sino a una serie de números que se repite.

Enlaces

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:


Lecturas populares