Blog

Antes que nada decir que esto está probado sobre un Prestashop 1.6 en desarrollo. Se clonó el sitio de producción y trabajó sobre el clon. Nunca realizar esto sobre un sitio en producción, siempre sobre un sitio de desarrollo (en este caso el clon).

Tenía en principio un Prestashop 1.5 que quería actualizar a la útlima versión de Prestashop (1.7.2.0). Queríamos realizar este proceso utilizando el módulo 1-Click Upgrade para que este haga la actualización de los archivos y la base de datos correctamente. Los pasos a seguir fueron:

  • 1. Actualizar Prestashop 1.5 a 1.6. Este proceso se realizó correctamente con 1-click upgrade.
  • 2. Intenté actualizar a Prestashop 1.7 desde PS1.6, pero falló. Intenté de diferentes manera: deshabilitando módulos, agregando mas tiempo de ejecución a PHP, cambiando la config del módulo, etc. pero no hubo caso.
  • 3. Para poder actualizar tuve que modificar el módulo 1-Click Upgrade 1.6.7 para que no haga backup de la base de datos y de los archivos. Al estar trabajando sobre un clon, esto no hace falta (por eso la importancia de trabajar sobre un sitio de desarrollo). Una vez con la modificación, inicié la actualización, salteó los pasos de backup y actualizó correctamente.
  • 4. Limpiar caché de Prestashop 1.7 y limpiar el historial/cache del navegador para que tomé bien los css y js del nuevo template del admin.

El archivo a modificar del módulo es ruta-a-mi-tienda/modules/autoupgrade/AdminSelfUpgrade.php

La funciónes a modificar son: ajaxProcessBackupDB() y ajaxProcessBackupFiles. Linea #3662 aprox. Reemplazamos ajaxProcessBackupDB y ajaxProcessBackupFiles por:

public function ajaxProcessBackupDb()
{   
        unset($this->nextParams['backup_loop_limit']);
        unset($this->nextParams['backup_lines']);
        unset($this->nextParams['backup_table']);
        $this->stepDone = true;
        // reset dbStep at the end of this step
        $this->nextParams['dbStep'] = 0;

        $this->next_desc = sprintf($this->l('Database backup done in filename %s. Now upgrading files...'), $this->backupName);
        $this->next = 'upgradeFiles';
        return true;
}

public function ajaxProcessBackupFiles()
{
        $this->stepDone = true;
        $this->next = 'backupDb';
        $this->next_desc = $this->l('All files saved. Now backing up database.');
        return true;
}

Con esta modificación se evitan los backups de archivos y base de datos y 1-click upgrade actualiza bien a Prestashop 1.7 en sitios grandes.

Es recomendable una vez que se está en Prestashop 1.7 actualizar el módulo porque estas modificaciones quedarían obsoletas (a menos que el módulo en 1.7 también falle).
No hice un debugeo a fondo, pero sospecho que falla por la cantidad de archivos a copiar. La tienda tiene mas de 1000 productos, con mas 1 una foto por producto, además hay 5 tipos de imágenes en Prestashop, por lo tanto existen un total aprox. de 10.000 archivos de imágenes como mínimo. Muchisimas imágenes para hacer backup, sospecho que por ahí viene el problema y efectivamente salteando el paso del backup el módulo funciona. No hizo falta debugear más porque la actualización a Prestashop 1.7 con 1-click upgrade funcionó.

Es una lástima que el equipo de Prestashop no deje hacer la actualización paso por paso, de esta manera se resolvería el problema sin tener que modificar el módulo. Es claro que no tienen ganas de hacer esta modificación para que tengas que comprar un módulo de migración...

¿Tenés la versión de Firefox Quantum 57 con este error?¿El inspector de Firefox no te funciona? ¿El inspector te tarda mas de 10 segundos en responder? ¿Abris la consola de desarrollo, intentas inspeccionar y tarde mucho en responder?

La solución a mi problema fue:

  • 1. Abrir una pestaña con la url: "about:config" (sin las comillas).
  • 2. Buscar la variables: "devtools.debugger.source-maps-enabled" (sin las comillas).
  • 3. Setearla en "false".
  • 4. Listo

En caso de no haber solucionado tu problema podes chequear el thread del problema aca dónde presentan otras posibles soluciones: Ir al thread del problema

Modificado por última vez en Jueves, 28 Diciembre 2017 15:50

Les comparto en esta ocacisón un tutorial muy completo que encontré sobre como configurar los registros SPF para los mails.

La página en cuestión es: Neeonez

Modificado por última vez en Martes, 31 Octubre 2017 17:03
Miércoles, 15 Marzo 2017 15:02

Bloquear IP o rango de ip con iptables

La manera de bloquear ip por iptables, o rango de ip, es con los siguientes comandos:

iptables -A INPUT -s 180.76.15.0/24 -j LOG --log-prefix "IP DROP SPOOF A:"
iptables -A INPUT -s 180.76.15.0/24 -j DROP

El primer comando lo que hace es generar el log al bloquear la ip o rango de ip, mientras que el segundo es el que bloquea la/s ip.

En este ejemplo bloqueamos el rango de ip pertenecientes a Baiduspider.

Jueves, 01 Diciembre 2016 16:46

Ejemplos de uso del comando find - ssh

Lista con ejemplos de uso del comando find, en ingles, pero se entiende perfecto: Useful Linux find Commands.

Una vez mas como comentaba en el post me encontre con que un usuario habia subido imagenes de gran tamaño por lo tanto cuando el Zoo (Joomla) intentaba redimensionar daba error de exceso de memoria. Se me vinieron 2 soluciones inmediatamente a la mente:

  • 1. Aumentar la memoria ram de la cuenta.
  • 2. Redimensionar las imagenes

Sin dudar por se un servidor que comparten varias cuentas, fui por la segunda opción. Cómo lo hice? Busqué algun comando que redimensione imagenes que sean mayores a un ancho mayor que 1280px (elegí este ancho porque era lo maximo que se mostraba en la web, podria haber sido 800px, 2000px, etc.). El comando que encontre fue:

# mogrify -resize '1280x960>' *.jpg

El comando anterior redimensiona (manteniendo la relacion de aspeco) las imagenes que tengan un ancho mayor que 1280px o 960px de alto a un ancho de 1280px o a un alto de 960px.

Modificado por última vez en Jueves, 01 Diciembre 2016 16:47

Encontre este artículo (en ingles) que nos enseña como funciona angular a nivel código, desde las entrañas. Me parecio muy practico para poder entender los conceptos que encierra el framework y poder optimizar mejor el código de nuestras apps en angular js

El enlace en cuestion: ¿Cómo funciona Angular JS a nivel código?

Miércoles, 31 Agosto 2016 13:04

Buscar archivos php vacios en linux

Me vi en la necesidad de buscar archivos php vacios. Buscando como encontrar esos archivos vacios dentro de carpetas y sus respectivas subcarpetas di con lo siguiente:

find PATH -empty -type f -name "*.php"

Dónde PATH es la ruta de la carpeta. Por ejemplo /home/pepito/, quedando el comando asi:

find /home/pepito/ -empty -type f -name "*.php"

Si por alguna razon quisieramos buscar por ejemplo imagenes jpg vacias, podriamos cambiar el comando por:

Modificado por última vez en Miércoles, 31 Agosto 2016 13:10
Jueves, 30 Junio 2016 18:31

Comentarios de Facebook en Joomla

Desarrollé este plugin para una web en la que estoy trabajando. El cliente queria tener los comentarios de facebook en los artículos de joomla. Por esta razon cree éste plugin que cumple esos requisitos.

Se instala, se habilita, se pone el app id de facebook para poder administrar los comentarios y listo. Los comentarios se muestran luego del artículo, mas precisamente en el evento onContentAfterDisplay.

Plugin en github: joomla-plg_facebookcomments

Modificado por última vez en Jueves, 30 Junio 2016 18:50

Debido a las nuevas politicas de Instagram algunas web que nos permitian obtener el userid de cualquier usuario de instagram ya no estan mas disponibles, pero existe una manera muy sencilla de solventar este problema

Para obtener el userid de un usuario de instagram nos basta con ir al Instagram del usuario, por ejemplo: Nike. En la url ponemos esto:

javascript:alert(window._sharedData.entry_data.ProfilePage[0].user.id);

y apretamos enter. Nos va a aparecer un numero, ese numero es el id del usuario de Instagram. Otra opcion, es abrir la consola de Firefox con F12 (lo mismo para Chrome), vamos a la solapa "Consola", ingresamos el mismo código y apretamos Enter.

Espero les sirva de utilidad.

Fuente del tip: http://www.otzberg.net/iguserid/
Modificado por última vez en Viernes, 10 Junio 2016 14:01
Página 1 de 3