Categorías
hoy aprendí ...

… a recuperar mis escritorios en W10 y darle una patada al Task View

Resulta que a pesar de tener que trabajar en Windows 10 había logrado organizar el tema de los múltiples escritorios para ayudarme a focalizar el trabajo según el tema con la ayuda de Windows 10 Virtual Desktop Enhancer, una aplicación que le agregaba mejoras a los paupérrimos escritorios virtuales (virtual desktops) que traía el sistema operativo ¡en pleno 2019! Nada de fondos personalizados o la posibilidad de darles nombres. Había que recurrir a soluciones de terceros.

El W10VDH ya no tenía soporte ni desarrollo desde fines del 2018 pero funcionaba muy bien hasta hace poco, cuando hubo una actualización de Windows que de repente había habilitado el Task View, Historial, Cortana, y otras «mejoras» más. Pasó que de repente cuando cambiaba de escritorio no me cambiaba el fondo, ni me mostraba el nombre, y al hacer WIN+TAB para tener la vista general de las ventana, me habían cambiado todo de lugar, y aparecía lo de la actividad reciente con el Historial. WTF!

La solución que encontré para poder trabajar como venía haciendo fue:

  1. Encontrar un fork más actualizado del Windows 10 Virtual Desktop Enhacer: https://github.com/vlwkaos/win10-virtual-desktop-enhancer
  2. Descargar el repositorio y ubicar los nuevos scripts en la carpeta donde tenía corriendo el ejecutable original del Windows 10 Virtual Desktop Enhacer.
  3. Desactivar la tecla TaskView de la barra, Cortana, y el Historial.
Categorías
hoy aprendí ...

… a agregar un botón de compartir

Amiguito SHARE para meter como link y que en dispositivo lance las opciones de compartir.

if(navigator.share !== undefined) {
    document.addEventListener('DOMContentLoaded', e => {
      var shareBtn = document.querySelector('div.share a');
      shareBtn.addEventListener('click', clickEvent => {
        clickEvent.preventDefault();
        navigator.share({title: document.title, text: window.location.href, url: window.location.href})
          .then(() => console.log('Successful share'),
           error => console.log('Error sharing:', error));
      });
    });
}

Esta joyita la encontré en https://paul.kinlan.me/navigator.share. ¡Gracias!

Le hice una modificación para tratar de incorporarlo en el plugin Storefront Product Share combinando algo de PHP y agregando:

		<div class="storefront-product-sharing">
			<ul>
				<li class="twitter"><a href="<?php echo esc_url( $twitter_url ); ?>" target="_blank" rel="noopener noreferrer"><?php _e( 'Share on Twitter', 'storefront-product-sharing' ); ?></a></li>
				<li class="facebook"><a href="<?php echo esc_url( $facebook_url ); ?>" target="_blank" rel="noopener noreferrer"><?php _e( 'Share on Facebook', 'storefront-product-sharing' ); ?></a></li>
				<li class="pinterest"><a href="<?php echo esc_url( $pinterest_url ); ?>" target="_blank" rel="noopener noreferrer"><?php _e( 'Pin this product', 'storefront-product-sharing' ); ?></a></li>
				<li class="email"><a href="<?php echo esc_url( $email_url ); ?>"><?php _e( 'Share via Email', 'storefront-product-sharing' ); ?></a></li>
        <li class="share-redes"><a href="#"><i class="fas fa-share-alt-square"></i> Compartir</a></li>
			</ul>
		</div>
    <script>
      if(navigator.share !== undefined) {
        document.addEventListener('DOMContentLoaded', e => {
          var shareBtn = document.querySelector('.share-redes a');
          shareBtn.addEventListener('click', clickEvent => {
            clickEvent.preventDefault();
            navigator.share({
              title: '<?php echo $product_title; ?>', 
              text: '<?php echo $product_url; ?>', 
              url: '<?php echo $product_url; ?>'
            })
            .then(() => console.log('Successful share'),
            error => console.log('Error sharing:', error));
          });
        });
      } else {
        console.log('Share API no soportado');
        var shareBtn  = document.querySelector('.share-redes');
        shareBtn.textContent = '';
      }
    </script>

Categorías
hoy aprendí ...

… a complicar las cosas en una hoja de cálculo

Necesitaba indicar una celta de manera «dinámica», es decir, formando el nombre dependiendo de la combinación del contenido de otras celdas.

Lo que tenía es una serie de datos encolumnados y totales parciales cada cierta cantidad regular de celdas. Me interesaba tener luego un resumen de esos totales parciales para confeccionar una tabla.

Por ejemplo: en la la página datos tiene la columna A y cada 20 filas hay un total parcial, entonces en la tabla de resumen (que está en otra hoja llamada resumen) la celda en fila 1 tiene que tomar los datos de $datos.A20, la fila 2 tiene que tomar los datos de $datos.A40, y así.

La solución que encontré es utilizar la función ADDRESS que permite indicar el nombre usando datos. Buscando ejemplos prácticos encontré https://forum.openoffice.org/es/forum/viewtopic.php?f=21&t=8091

Encontré esto otro que podría resultar interesante también aunque no lo puse en práctica: https://help.libreoffice.org/6.1/es/text/scalc/guide/value_with_name.html

Otra cosa interesante es: https://blog.open-office.es/calc/lista-desplegable-condicionada-en-openoffice-libreoffice-calc

Me falta completar con la solución que usé

Categorías
entropía hoy aprendí ...

…a copiar archivos basado en una lista con el Total Commander

Tengo una carpeta con una selección de fotos, pero en baja resolución, a las que no se le cambió el nombre de archivo respecto a original.

Por otro lado tengo la carpeta donde están todas la fotos (que son muchísimas) y sólo quiero copiarme las que tengo en la selección.

Mi solución chapucera fue:

  1. Abrir el Total Commander
  2. Seleccionar los archivos en la carpeta primera (la que tiene los archivos en baja)
  3. Copiar como texto la ubicación (esto desde el Total hay un botón que lo hace)
  4. Pegar en algún editor de texto copado como el Notepad++
  5. Reemplazar las rutas por ; para armar un listado
  6. Copiar el listado
  7. En el Total ubicarse en el panel donde están todas las fotos que tenemos que filtrar
  8. Hacer una búsqueda (ATL+F7) y pegar el listado de archivo
  9. Pedir que los resultados los agregue a la Lista y entonces genera el panel con sólo los archivos encontrados
  10. Copiar los archivos a donde se necesite
  11. Tomarse 5 minutos y tomarse un té.

Actualizaré con fotos (algún día).

Categorías
hoy aprendí ...

…que Wix es super atractivo (pero no todo lo que brilla es oro)

Tengo que trabajar con un colega en la construcción de un sitio web. Él usa Wix y yo tiro más para el lado de WordPress.

Pero como siempre me interesa aprender cosas nuevas, y ya tenía ganas de meterle mano al Wix, decidí que armaríamos en esa plataforma.

Lo primero es que es super atractiva, con colores, animaciones, una interfaz muy cuidad, con guías paso a paso, ayudas. Todo como para que el que tenga ganas le resulte fácil empezar a armar una página o sitio web. Casi parece un juego de Lego.

Pero algunas cosas se nota que están todavía las están incorporando, cosas que en WordPress ya las doy por echo (está bien, son casi 16 años y una comunidad gigante de desarrolo y soporte), pero las principales que necesitaba son:

  • Capacidad idioma
  • Que varios usuarios puedan editar (al mismo tiempo en diferentes partes)

Pero logramos resolver varias cosas y salimos adelante.

El principal problema fue el blog de entradas que el feed no cambiaba con el cambio de idioma. Hay una solución alternativa que propone la gente de Wix que es tagear las entradas por idioma y luego armar una página para cada feed de idioma y filtrar por el tag.

Otro problema que tuvimos, pero esto le puede pasar a cualquiera, es que en el home teníamos un ligthbox de video que reproducía automático al entrar, pero generaba problema con la animación de entrada de la cabecera y menú. Al cerrar el video desaparecía el menú y la cabecera.

La solución fue desactivas las animaciones de entrada (perdimos un poco de brillo en pos de la funcionalidad)

Sin embargo resulta interesante.