Aunque normalmente seguimos las guías de howtoforge.com, para que un servidor Web (LAMP) funcione correctamente debe tener instalados y configurados como mínimo los siguientes elementos:

Módulos:

  • mod_expires
  • mod_cached
  • mod_deflate
  • mod_headers
  • mod_mem_cache
  • mod_disk_cache
  • mod_pagespeed

Cachés:

  • OPcache
  • Memcache
  • Redis

Además de instalar todo esto, recomendamos configurar el módulo de PageSpeed para que utilice Memcache. Esto se consigue poniendo esta línea en el archivo de configuración del módulo de PageSpeed:

Por supuesto, estamos hablando de servidores Web con Apache 2.4, HTTP2, PHP 7.x, etc

A veces me he encontrado con que ha habido que corregir a mano la url o el nombre de la imagen de algún producto en una base de datos de Magento. Cuando esto pasa, hemos de saber que hay que trabajar con 2 tablas:

catalog_product_entity_varchar

catalog_product_entity_media_gallery

Moodle 3.3 ha traido un nuevo elemento de vista general de curso, muy aplaudido por la comunidad, pero con un pequeño contratiempo, y es que los cursos por páginas están definidos por una constante y no es algo que pueda configurarse.

Si necesitamos modificarlo, tendremos que entrar en el código y modificar la constante COURSES_PER_PAGE de la clase courses_view que está en el archivo courses_view.php que está en la ruta blocks/myoverview/classes/output/courses_view.php

Cuando la función on_sent_ok os de el error de ajuste obsoleto (o is Deprecated), habrá que cambiar la función que tenemos por código JavaScript.

En nuestro caso, el cliente tenía una redirección a una URL, con lo que cambiamos el código a

[crayon-5bef83d30a4b9375590111/]

 

 

En este caso, tenemos un cliente que quiere que sólo los atributos con valor a “Sí” (o TRUE, o “Verdadero”, como queráis). ¿Cómo lo conseguimos?
Nos iremos al archivo attribute.phtml del paquete del tema que estamos utilizando, cuya ruta es:

/app/design/frontend/nuestro_tema/paquete_usado/template/catalog/product/view/attribute.phtml

Y buscamos este código:

[crayon-5bef83d30a909922568687/]

Y lo reemplazamos por este otro:

[crayon-5bef83d30a914024217392/]

Obviamente, en el punto del código donde pone ‘No’, podemos poner

[crayon-5bef83d30a91a694131738/]

[crayon-5bef83d30b031488307428/]

Cuando en un Moodle tengamos foros y aparentemente no salgan sus correos a los usuarios, podemos chequear su funcionamiento abriendo una conexión por terminal y ejecutando el siguiente comando:

[crayon-5bef83d30b03c460912339/]

Al ejecutarlo, si está todo correcto y no hay nada en cola, saldrá algo así:

[crayon-5bef83d30b040358611113/]

Y si por el contrario, hay alguna petición en cola, saldrá así:

[crayon-5bef83d30b044021419577/]

Si hay algún problema, el mensaje sería el siguiente:

[crayon-5bef83d30b04a586090785/]

Según el error devuelto, tendremos que arreglar permisos, o corregir la ruta de PHP etc.

Si tenemos un WordPress y estamos trabajando con JQuery, puede que no se ejecute debido al siguiente error:

[crayon-5bef83d30b35b242474900/]

Para solucionar esto, simplemente envolveremos nuestro código JQuery con

[crayon-5bef83d30b363138804255/]

¿Por qué ocurre esto?. Sencillo, estamos ejecutando JQuery en modo “noConflicto”

[crayon-5bef83d30b365117163448/]

por lo que la notación $ no la reconoce, así que necesitamos envolver nuestra función de forma que pueda ejecutarse correctamente.

A veces sucede que cuando se instala un plugin en MAgento, o lo desinstalamos, o actualizamos la plataforma de alguna forma, la parte del front se ve perfectamente y funciona todo, pero al intentar entrar en el backend, no podemos acceder al mismo.

Nos ponemos un poco nerviosos, porque aunque no es la pantalla de mantenimiento, no podemos acceder al backend de nuestro comercio electrónico. Si después de hacer lo que te recomiendan en foros y webs, que suele ser “borrar el contenido del directorio de var/cache de Magento”, “borrar el contenido del directorio var/sessions de Magento” y ver que sigue igual, y después de poner el código correspondiente al modo desarrollador:

[crayon-5bef83d30baff452248081/]

y comprobar que seguimos sin ver nada, ni en los archivos de log propios de Apache ni en los de var/log y var/reports de Magento, y tampoco has conseguido ver qué ocurre al desactivar la compilación, es que ha llegado el momento de utilizar este código, que devolverá qué clase es la que da el error, y por lo tanto, nos dará pistas de qué está ocurriendo (por ejemplo, que no se ha instalado / desintalado el plugin correctamente, o que la instalación ha encontrado algún problema a la hora de volcar todos los archivos de la actualización, y alguno no lo ha hecho, o se ha corrompido algún archivo, etc).

[crayon-5bef83d30bb0e938898095/]

Empezamos una serie de artículos hoy en la que explicamos qué es un contenedor Docker, para qué sirve, cómo lo usaremos y por qué vamos a trabajar con él.

El contenedor Docker es una tecnología que nos permite empaquetar y desplegar las aplicaciones que desarrollemos de una forma eficaz, rápida, eficiente y segura. ¿Cómo lo hace posible? Vamos a verlo.
Las aplicaciones que desarrollamos normalmente necesitan bibliotecas y dependencias que no siempre nos llevamos de un servidor a otro. Docker empaqueta aplicación, dependencias y bibliotecas, para poder llevarnos todo de un servidor a otro. Gracias a Docker, ya no oiremos más “en mi local funciona” mientras vemos que en producción la aplicación no va.

Por otra parte, con contenedores de Docker utilizamos menos recursos porque no nos llevamos el sistema operativo completo, sólo lo necesario para la aplicación desarrollada, por lo que es más eficiente que una VM. Eso sí, debemos tener en cuenta que cada VM emula el hardware que necesita, cosa que no pueden hacer los contenedores Docker. Tenemos que tener en cuenta esta característica, ya que los contenedores sólo proporcionan un entorno de ejecución correcto para la aplicación. Por otra parte, como un contenedor no lleva todo el sistema operativo consigo, podemos tener varios contenedores en un mismo servidor, y además, ¡compartiendo todas mismo kernel!.

Por lo tanto, los contenedores están aislados, aunque comparten sistema operativo, kernel, y si corresponden, los mismos binarios y bibliotecas.

Y aquí dejamos la primera píldora sobre contenedores Docker. En unos días, más.

Logo-DockerEn desarrollo, estamos acostumbrados a que el despliegue de una aplicación en producción sea un dolor de muelas, y no nos gusta llegar al momento “paso a producción”, por la de posibles errores de última hora que nos encontramos. ¿Cuántas veces nos hemos encontrado que el desarrollo realizado en un servidor y entorno determinado, no funciona en otro? ¿Cuántas veces hemos dicho la temida frase “en mi local (o servidor) funciona”?. Solucionar este tipo de problemas siempre ha sido un añadido en todo proyecto que nunca se sabe calcular, hasta ahora, ya que gracias a herramientas como Docker, podemos realizar despliegues de desarrollos independientemente del entorno en el que se despliegan. ¿Cómo logramos hacerlo? ¿Realmente interesa trabajar con una herramienta como Docker? Para explicarlo, vamos a publicar unas entradas, en las que iremos viendo qué es y para qué sirve, y cómo funciona Docker. ¡Esperamos que os gusten!