Categorías
hoy aprendí ...

… a realizar chapucerías con caracteres y fórmulas en hojas de cálculo

Resulta que una tabla con nombres debía prepararla para ser procesada por PHP para generar contenido repetitivo. El nombre de la persona escrito de manera normal debia luego usarlo como nombre de archivo en el servidor web para cargar la foto, dejando todo en minúscula y reemplazando espacios con guión bajo, y acentos.

Ej:

Juan Pérez -> juan_perez

Resulta que en LibreOffice Calc (y asumo que en Excel también) hay una funciones para trabajar con strings (cadenas de caracteres).

=MINUSC(SUSTITUIR(B10;" ";"_"))

Básicamente logra pasar a minúscula y reemplazar los espacios.

Juan Pérez -> juan_pérez

La última parte de reemplazar los caracteres especiales de acentos, ñ, y apóstrofes lo terminé realizando en PHP con la ayuda de https://codigosdeprogramacion.com/2019/07/11/quitar-acentos-y-tildes-en-php/

function eliminar_acentos($cadena){

    //Reemplazamos la A y a
    $cadena = str_replace(
    array('Á', 'À', 'Â', 'Ä', 'á', 'à', 'ä', 'â', 'ª'),
    array('A', 'A', 'A', 'A', 'a', 'a', 'a', 'a', 'a'),
    $cadena
    );

    //Reemplazamos la E y e
    $cadena = str_replace(
    array('É', 'È', 'Ê', 'Ë', 'é', 'è', 'ë', 'ê'),
    array('E', 'E', 'E', 'E', 'e', 'e', 'e', 'e'),
    $cadena );

    //Reemplazamos la I y i
    $cadena = str_replace(
    array('Í', 'Ì', 'Ï', 'Î', 'í', 'ì', 'ï', 'î'),
    array('I', 'I', 'I', 'I', 'i', 'i', 'i', 'i'),
    $cadena );

    //Reemplazamos la O y o
    $cadena = str_replace(
    array('Ó', 'Ò', 'Ö', 'Ô', 'ó', 'ò', 'ö', 'ô'),
    array('O', 'O', 'O', 'O', 'o', 'o', 'o', 'o'),
    $cadena );

    //Reemplazamos la U y u
    $cadena = str_replace(
    array('Ú', 'Ù', 'Û', 'Ü', 'ú', 'ù', 'ü', 'û'),
    array('U', 'U', 'U', 'U', 'u', 'u', 'u', 'u'),
    $cadena );

    //Reemplazamos la N, n, C y c
    $cadena = str_replace(
    array('Ñ', 'ñ', 'Ç', 'ç'),
    array('N', 'n', 'C', 'c'),
    $cadena
    );

    //Reemplazamos apróstrofes ' ’ ` ´
    $cadena = str_replace(
    array("'", '’', '`', '´'),
    array('', '', '', ''),
    $cadena
    );

    return $cadena;
}

Y chau

Categorías
hoy aprendí ...

… a decirle a git que deje de darle bola al cambio de modo de los archivos

git config core.fileMode false

Encontrado en https://stackoverflow.com/a/1580644

Con una explicación muy buena:

Try:

git config core.fileMode false

From git-config(1):

core.fileMode
    Tells Git if the executable bit of files in the working tree
    is to be honored.

    Some filesystems lose the executable bit when a file that is
    marked as executable is checked out, or checks out a
    non-executable file with executable bit on. git-clone(1)
    or git-init(1) probe the filesystem to see if it handles the 
    executable bit correctly and this variable is automatically
    set as necessary.

    A repository, however, may be on a filesystem that handles
    the filemode correctly, and this variable is set to true when
    created, but later may be made accessible from another
    environment that loses the filemode (e.g. exporting ext4
    via CIFS mount, visiting a Cygwin created repository with Git
    for Windows or Eclipse). In such a case it may be necessary
    to set this variable to false. See git-update-index(1).

    The default is true (when core.filemode is not specified
    in the config file).

The -c flag can be used to set this option for one-off commands:

git -c core.fileMode=false diff

Typing the -c core.fileMode=false can be bothersome and so you can set this flag for all git repos or just for one git repo:

# this will set your the flag for your user for all git repos (modifies `$HOME/.gitconfig`)
git config --global core.fileMode false

# this will set the flag for one git repo (modifies `$current_git_repo/.git/config`)
git config core.fileMode false

Additionally, git clone and git init explicitly set core.fileMode to true in the repo config as discussed in Git global core.fileMode false overridden locally on clone

Warning

core.fileMode is not the best practice and should be used carefully. This setting only covers the executable bit of mode and never the read/write bits. In many cases you think you need this setting because you did something like chmod -R 777, making all your files executable. But in most projects most files don’t need and should not be executable for security reasons.

The proper way to solve this kind of situation is to handle folder and file permission separately, with something like:

find . -type d -exec chmod a+rwx {} \; # Make folders traversable and read/write
find . -type f -exec chmod a+rw {} \;  # Make files read/write

If you do that, you’ll never need to use core.fileMode, except in very rare environment.

Categorías
hoy aprendí ...

… a como arreglar un problema de login en WordPress

Una instalación de WordPress vieja (4.0) que tenía un cliente dejó de funcionar al login cuando el proveedor de hosting hizo la actualización del servidor de PHP 5.6 a PHP7.

Lo primero fue activar los mensajes de error para saber qué estaba pasando.

Luego de obtener el mensaje realizar la búsqueda en la internet a ver si esto ya alguien lo había solucionado.

Y gracias a este sitio en alemán encontré la solución.

Hay que reemplazar una sola línea de código. Y luego de hacer el login, ingresar al panel y hacer la actualización de WP.

Y chau

Categorías
hoy aprendí ...

…apuntar por IP entre dnsExit y Wix

El sitio del que comentaba ayer al momento de publicarlo lo teníamos que asociar al dominio.

Como la idea era tener un subdominio alojado en otro servidor diferente de Wix para poder acceder vía SFTP la solución fue:

En el sitio de Wix asociar al dominio por apuntamiento IP (cosa que Wix no recomienda, pero somo así de aventureros) con lo cual en DNS Exit hay que agregar la IP que proporciona Wix y apuntar un registro.

Registros de apuntamiento

Haz clic aquí para saber cómo conectar tu dominio por apuntamiento.

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.