Cómo desactivar el modo de mantenimiento en WordPress tras una actualización de plugins

Cuando actualizas plugins o temas en WordPress, tu sitio entra temporalmente en modo de mantenimiento para evitar que los usuarios experimenten problemas durante el proceso. Sin embargo, a veces este modo no se desactiva automáticamente y deja tu sitio inaccesible, mostrando un mensaje de "mantenimiento". En esta guía, te explicamos cómo salir del modo de mantenimiento manualmente y restaurar el acceso a tu sitio.

¿Por Qué WordPress Se Queda en Modo de Mantenimiento?

WordPress crea un archivo temporal llamado .maintenance en el directorio raíz de tu instalación para activar el modo de mantenimiento mientras se actualizan los plugins o temas. Si la actualización falla o se interrumpe, este archivo no se elimina automáticamente y el sitio permanece bloqueado en el modo de mantenimiento.

Pasos para Desactivar el Modo de Mantenimiento en WordPress

Sigue estos sencillos pasos para eliminar el modo de mantenimiento y restaurar el acceso a tu sitio.

1. Accede a los Archivos de tu Sitio

Para comenzar, necesitas acceder a los archivos raíz de tu instalación de WordPress. Puedes hacerlo de varias maneras:

  • FTP: Utiliza un cliente FTP como FileZilla para conectarte al servidor.
  • cPanel: Si tienes acceso al panel de administración cPanel, puedes usar el "Administrador de archivos" para navegar en los archivos de tu sitio.
  • SSH: Para usuarios avanzados, puedes usar una terminal SSH para acceder al servidor.

2. Encuentra el Archivo .maintenance

Una vez que estés en el directorio raíz de WordPress (donde se encuentran archivos como wp-config.php y las carpetas wp-content y wp-admin), busca un archivo llamado .maintenance. Este archivo activa el modo de mantenimiento, y al eliminarlo, desactivarás este modo.

Nota: Asegúrate de que tu cliente FTP o Administrador de Archivos esté configurado para mostrar archivos ocultos, ya que el archivo .maintenance puede estar oculto.

3. Elimina el Archivo .maintenance

Haz clic derecho en el archivo .maintenance y selecciona "Eliminar" o "Borrar". Este paso desactiva inmediatamente el modo de mantenimiento de WordPress.

4. Recarga tu Sitio

Con el archivo .maintenance eliminado, visita tu sitio en el navegador y verifica que ya esté funcionando correctamente. El modo de mantenimiento debería estar desactivado, y el sitio debería ser accesible.

¿Y si el Problema Persiste?

Si tu sitio aún muestra problemas, intenta lo siguiente:

  • Limpia la caché del navegador o usa el modo de incógnito.
  • Desactiva y reactiva los plugins desde el panel de administración de WordPress si puedes acceder.
  • Verifica permisos de archivos: asegúrate de que el servidor tenga los permisos adecuados para crear y eliminar archivos.

Conclusión

Este problema es más común de lo que parece y, por suerte, tiene una solución sencilla. Al eliminar el archivo .maintenance de la raíz de WordPress, tu sitio debería volver a la normalidad en minutos. Mantén estos pasos en mente para que puedas resolver el problema rápidamente la próxima vez que WordPress se quede atrapado en modo de mantenimiento.

Búsqueda de archivos en Linux

Introducción

Buscar archivos en Linux puede ser una tarea común, pero también puede volverse compleja si no conocemos los comandos adecuados. Afortunadamente, la terminal de Linux nos ofrece herramientas potentes y flexibles para realizar búsquedas rápidas y eficientes. En este post, veremos cómo buscar archivos por su nombre y cómo encontrar contenido dentro de los archivos utilizando los comandos find y grep.

1. Búsqueda de archivos por nombre con find

Para encontrar un archivo específico en Linux, el comando más usado es find. Este comando permite realizar búsquedas en un directorio y sus subdirectorios de forma recursiva. Veamos cómo usarlo:

Ejemplo básico:

Para buscar un archivo con un nombre exacto, puedes usar el siguiente comando:

find /ruta/de/busqueda -name "nombre_del_archivo"
  • /ruta/de/busqueda: Aquí defines dónde empezar la búsqueda. Puede ser una ruta específica o el directorio actual (.).
  • nombre_del_archivo: El nombre exacto del archivo que buscas.

Por ejemplo, si estás buscando un archivo llamado archivo.txt en el directorio actual:

find . -name "archivo.txt"

Búsqueda sin distinguir mayúsculas y minúsculas

Si quieres que la búsqueda no distinga entre mayúsculas y minúsculas, usa la opción -iname:

find . -iname "archivo.txt"

Esto buscará archivos como archivo.txt, Archivo.txt o incluso ARCHIVO.TXT.

Búsqueda de archivos que contienen un string en el nombre

Si no conoces el nombre exacto del archivo pero sabes que contiene cierto string, puedes usar comodines (*) para hacer la búsqueda más flexible. Por ejemplo, para buscar archivos que contengan la palabra reporte en su nombre:

find . -name "*reporte*"

Este comando encontrará archivos como reporte.txt, mi_reporte_final.pdf, o nuevo_reporte_2024.doc.

Búsqueda ignorando mayúsculas y minúsculas:

find . -iname "*reporte*"

Esto no solo encontrará archivos con la palabra reporte, sino también variaciones como Reporte.txt o REPORTE.doc.

3. Búsqueda de contenido dentro de archivos con grep

A veces no estamos buscando un archivo en particular, sino archivos que contienen un string específico en su contenido. Para esto, el comando grep es ideal.

Búsqueda recursiva en el contenido de los archivos:

Para buscar un string dentro de todos los archivos en un directorio y sus subdirectorios, usa la opción -r de grep:

grep -r "cadena_de_texto" /ruta/de/busqueda

Por ejemplo, si quieres buscar la palabra "error" en todos los archivos del directorio actual:

grep -r "error" .

Esto te mostrará todas las coincidencias del string "error" en los archivos de esa carpeta.

Usar find junto con grep para búsquedas avanzadas:

Si quieres buscar en archivos específicos (por ejemplo, solo archivos .log), puedes combinar find y grep:

find . -name "*.log" -type f -exec grep -H "error" {} \;

Este comando busca en todos los archivos .log y muestra aquellos que contienen la palabra "error". La opción -H en grep hace que el resultado incluya el nombre del archivo donde se encuentra el string.

Ver el número de línea donde aparece el string:

Para mostrar el número de línea donde aparece la coincidencia, agrega la opción -n a grep:

grep -rn "cadena_de_texto" /ruta/de/busqueda

Esto es muy útil cuando estás buscando un error específico o un mensaje de log y quieres saber exactamente en qué parte del archivo aparece.

Conclusión

Ya sea que necesites encontrar un archivo específico o un string en el contenido de varios archivos, Linux ofrece herramientas versátiles como find y grep que te permiten realizar búsquedas de forma eficiente. Con los ejemplos que vimos hoy, estarás listo para navegar y buscar archivos en tu sistema de una manera más rápida y precisa.

Cómo cargar variables de un archivo .env en Python

Introducción

En cualquier proyecto, gestionar configuraciones sensibles o variables que cambian según el entorno (como claves API, credenciales de base de datos, etc.) es crucial. Una buena práctica es mantener estas variables en un archivo .env y luego cargarlas en tu aplicación sin hardcodearlas. En Python, esto es extremadamente sencillo gracias a la librería python-dotenv.

Pero, ¿qué pasa si tu archivo .env no está en la raíz del proyecto? No te preocupes, aquí te mostraremos cómo cargar este archivo desde cualquier ubicación y aprovechar las bondades de python-dotenv.

¿Por qué usar un archivo .env?

El archivo .env permite mantener variables de entorno de manera organizada y segura. Al usarlo, evitas incluir datos sensibles en tu código fuente. Es ideal para manejar configuraciones específicas del entorno como:

  • Claves API
  • Credenciales de bases de datos
  • Configuraciones de correo electrónico
  • Opciones de depuración

Esto es especialmente útil cuando trabajas en diferentes entornos (desarrollo, staging, producción).

Instalación de python-dotenv

Para cargar las variables de entorno en Python, primero necesitamos instalar la librería python-dotenv. Puedes hacerlo de manera muy sencilla desde tu terminal:

pip install python-dotenv

Esta librería nos permitirá leer el archivo .env y cargar automáticamente sus valores como variables de entorno.

Crea tu archivo .env

Un archivo .env es simplemente un archivo de texto que contiene pares clave-valor. Un ejemplo típico podría ser algo como esto:

# .env
API_KEY=12345abcdef
DB_HOST=localhost
DB_PORT=5432

Este archivo normalmente se coloca en la raíz del proyecto, pero como veremos más adelante, puedes ubicarlo en cualquier carpeta.

Cargar el archivo .env en tu código Python

En tu script de Python, debes cargar el archivo .env para acceder a las variables. Aquí es donde entra en juego python-dotenv.

Si el archivo .env está en la raíz de tu proyecto, simplemente puedes usar:

from dotenv import load_dotenv
import os

# Cargar las variables desde el archivo .env
load_dotenv()

# Acceder a las variables de entorno
api_key = os.getenv('API_KEY')
db_host = os.getenv('DB_HOST')
db_port = os.getenv('DB_PORT')

print(f"API Key: {api_key}")
print(f"Database Host: {db_host}")
print(f"Database Port: {db_port}")

¿Y si el archivo .env está en otra ubicación?

Si el archivo .env no está en la raíz de tu proyecto, ¡no te preocupes! python-dotenv también permite especificar la ubicación del archivo .env. Esto es útil cuando tienes diferentes configuraciones según entornos o simplemente prefieres mantener tus archivos de configuración organizados en carpetas específicas.

Supongamos que tienes tu archivo .env en una carpeta llamada config/ dentro de tu proyecto. Solo necesitas especificar la ruta al cargar el archivo:

from dotenv import load_dotenv
import os
from pathlib import Path

# Define la ruta del archivo .env (cambia 'config/.env' por la ubicación correcta)
env_path = Path('config/.env')

# Cargar las variables desde el archivo .env
load_dotenv(dotenv_path=env_path)

# Acceder a las variables de entorno
api_key = os.getenv('API_KEY')
db_host = os.getenv('DB_HOST')
db_port = os.getenv('DB_PORT')

print(f"API Key: {api_key}")
print(f"Database Host: {db_host}")
print(f"Database Port: {db_port}")

¿Por qué usar Path de pathlib?

Usar pathlib te permite manejar rutas de archivos de una forma más robusta y multiplataforma. Así no tendrás que preocuparte por los diferentes formatos de rutas entre Windows y Unix.

Mantén tu .env seguro

Recuerda que los archivos .env suelen contener información sensible. Asegúrate de no incluirlos en el control de versiones añadiendo una línea en tu archivo .gitignore:

# Ignorar archivo .env
.env

Conclusión

Utilizar un archivo .env en tus proyectos Python es una excelente manera de gestionar configuraciones de manera segura y flexible. Además, con python-dotenv, puedes cargar este archivo desde cualquier lugar de tu proyecto, lo que te da aún más control sobre cómo organizas tus configuraciones.

Ya sea que estés trabajando con diferentes entornos o simplemente quieras evitar hardcodear datos sensibles, esta técnica te ahorrará muchos dolores de cabeza. ¡Así que adelante, organiza y protege tus configuraciones de forma sencilla!

Listar colecciones en MongoDB

En este artículo les mostraré rápidamente como listar las colecciones de una base de datos MongoDB. Pero antes de eso, ¿Que son las colecciones?

Al igual que en una base de datos MySQL, almacenamos registros en tablas, en MongoDB almacenamos registros (Aquí los vamos a llamar documentos) en una colección. Así que podemos decir que las colecciones serán algo así, como las tablas de nuestra base de datos MongoDB.

Ahora que tenemos una idea de que son las colecciones, si estás acostumbrado a trabajar con MySQL verás que la forma de listar las colecciones en MongoDB no es muy distinta de como lo venias haciendo actualmente.

Entonces, vayamos al grano. Lo primero que debes hacer (Al igual que con una base de datos MySQL) es conectar a tu consola de MongoDB para poder ejecutar comandos que serán interpretados por el motor de la base de datos. Para esto escribimos en la consola:


mongo


Ya en la consola de MongoDB, si queremos conocer las colecciones que tiene nuestra base, solo debemos ejecutar:


show collections


Esto nos devolverá un listado con todas las colecciones que tiene actualmente la base de datos.

Espero que este artículo les haya sido de ayuda.

Buscar columnas por nombre en MySQL

Puede que alguna vez te hayas preguntado, o incurriste en la necesidad de saber si un determinado dato se estaba almacenando o no en la base de datos. Esto es algo que suele suceder si estas heredando algún sistema y no tienes toda la documentación técnica o si de repente estas utilizando algún módulo, paquete o librería de un tercero que almacena información en tu base de datos.

Quizás una forma práctica de poder resolver esto es buscando el nombre del dato, o mejor dicho el nombre de la columna donde suponemos que se guarda esa información en la base de datos.


Veamos un ejemplo práctico

Digamos, que estoy trabajando con un sistema que administra libros y necesito saber si mi sistema almacena el código ISBN de cada libro. Podría efectuar una consulta para obtener todas las tablas que contengan una columna con el nombre ISBN, de forma tal que me de in indicio de si dicha info esta siendo o no almacenada.

Para eso en nuestra consola de MySQL podemos ejecutar el siguiente comando.


SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE 'ISBN';


Esto nos devolvería una lista (En formato de tabla) con el nombre de las tablas donde se encuentra dicho campo.

Ahora bien, que pasa si en realidad el campo se llama CODIGO_ISBN o ISBN_CODE ? El ejemplo anterior no nos serviría o no nos devolvería nada, ya que está filtrando por el nombre exacto de ISBN, por lo que necesitamos de alguna forma especificar que contenga la palabra ISBN pero que no sea exactamente ese nombre. Para este caso, podemos hacer unas mínimas modificaciones a la consulta, de forma tal que quede así:


SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%ISBN%';


Ahora si, esta consulta nos devolverá una tabla con dos columnas, en la primera encontraremos el nombre de la tabla y en la segunda el nombre del campo de esa tabla que contenga la palabra ISBN.

Espero que este artículo les haya sido de ayuda.

Chequear tamaño de base y tablas en MySQL

A veces nos encontramos con la necesidad de saber cuanto están pesando nuestra base de datos, ya sea porque necesitamos que el sitio periforme mejor o porque queremos optimizar nuestro manejo de datos.

MySQL es uno de los motores de bases de datos más utilizados en el desarrollo de aplicaciones web, no es el único, pero si uno de los más populares. Es por esto que la elegí como referencia para este artículo.

Sin más vueltas vamos a explicar como obtener el tamaño de tu base de datos por medio de unas simples consultas a la base de datos.

Primero necesitas conectarte a la base de datos para poder correr las consultas. Esto es algo que puedes realizar ejecutando en tu consola el siguiente comando:


mysql -h DB_HOST -u DB_USERNAME -pDB_PASSWORD DB_DATABASENAME


Donde DB_HOST es el host name de donde se encuentra tu base de datos (si estas trabajando en local puede ser localhost) DB_USERNAME y DB_PASSWORD son el nombre de usuario y contraseña que utilizas respectivamente para conectar a la base de datos y finalmente DB_DATABASENAME es el nombre de la base de datos a la que quieres conectarte.

También puedes usar otras herramientas como MySQL Workbench (por ejemplo) para ejecutar las consultas.

Una vez en la consola de MySQL para obtener el tamaño de nuestra base de datos en MB debemos ejecutar la siguiente consulta:


SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS "Size (MB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;


Si queremos la misma información pero en GB podemos ejecutar:


SELECT table_schema AS "Database", 
ROUND(SUM(data_length + index_length) / 1024 / 1024 / 1024, 2) AS "Size (GB)" 
FROM information_schema.TABLES 
GROUP BY table_schema;


Esto está bastante bueno pero solo nos da una visión general, si queremos tener algo más detallado, podemos ejecutar otras consultas similares para obtener el tamaño detallado por tablas, por ejemplo, para obtener el tamaño de las tablas en MB, podemos ejecutar:


SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024), 2) AS "Size (MB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;


Para obtener la misma información pero en GB, ejecutaremos:


SELECT table_name AS "Table",
ROUND(((data_length + index_length) / 1024 / 1024 / 1024), 2) AS "Size (GB)"
FROM information_schema.TABLES
WHERE table_schema = "database_name"
ORDER BY (data_length + index_length) DESC;


Espero que este artículo les haya sido de ayuda.

Crear funciones de bash custom en Ubuntu 20.04 LTS

Bash

Algunas veces nos encontramos trabajando con la terminal y ejecutando incontables veces la misma secuencia de comandos cambiando solo uno o algunos pocos parámetros entre secuencia y secuencia. O simplemente, necesitamos simplificar algunas operaciones básicas sin ejecutar comandos kilométricos. Para este tipo de situaciones, una buena práctica puede ser utilizar funciones de bash customizadas, es decir creadas por nosotros para nuestras necesidades específicas.

En este artículo exploraremos como declarar una función (sencilla) de bash y hacer que la misma esté disponible como un comando más en nuestra terminal.

Lo primero que debemos hacer es crear un archivo donde declararemos nuestra función. Para eso, con nuestro editor de texto favoríto crearemos un archivo llamado .custom_functions.sh en el home de nuestro usuario. Noten que lo iniciamos con . (punto) para mantenerlo como un archivo oculto del sistema y minimizar la posibilidad de eliminarlo por error.

Al comienzo del archivo agregamos la siguiente linea:

#!/bin/bash

Luego, para este ejemplo puntual crearemos una función sencilla, que toma un valor ingresado como parámetro y lo muestra por pantalla, por lo que necesitaremos agregar el siguiente código al mismo archivo:

function printsaludo(){
	echo "Hola $1"
}

Guardamos los cambios y para probarlo ejecutamos en la terminal el comando source .custom_functions.sh una vez hecho esto podremos usar la función printsaludo como un comando más de bash. Si escribimos printsaludo Juan por ejemplo esto imprimirá la cadena Hola Juan

Ahora bien, si reiniciamos nuestro equipo y queremos volver a usar el comando notaremos que no está disponible y para que funcione nuevamente tenemos que ejecutar source .custom_functions.sh una vez más. Para evitar ejecutar esto cada vez que reiniciamos nuestro equipo, necesitamos editar el archivo .bashrc que se encuentra en home nuestro usuario y agregar las siguientes lineas al final:

# Custom commands
source /home/my_user/.custom_scripts.sh

Donde dice my_user deberás poner el nombre de la cuenta de usuario de linux que estas utilizando. Una vez hecho esto salvas el archivo y ya tienes tu función seteada para utilizar en todo momento.

Obviamente la idea es que puedas generar funciones más complejas que faciliten tus tareas diarias y/o procesos que impliquen la ejecución de varias secuencias de comando.

Espero que este artículo les haya sido de ayuda.

Instalar Sublime Text 4 en Ubuntu 20.04 LTS

SublimeText4

Hoy vamos a mostrarles como instalar Sublime Text 4 en Ubuntu 20.04 LTS con apt. Lo primero que necesitamos hacer es abrir la terminal de comandos. Para eso vamos al Icono de Mostrar Aplicaciones en la barra de herramientas.

Mostrar Aplicaciones

En el cuadro de búsqueda escribiremos terminal y seleccionaremos el icono de la misma.

Terminal en Mostrar Aplicaciones

Ya en la terminal, lo primero que haremos es instalar GPG Key, para esto typeamos:

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -

Posiblemente le requiera ingresar la contraseña para continuar con la instalación.

El próximo paso es asegurarnos que apt está configurado para trabajar con orígenes https. Por lo que escribiremos en la terminal:

sudo apt-get install apt-transport-https

Luego seleccionaremos el canal para instalar la versión estable de Sublime Text 4:

echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list

Hacemos un update de los los origenes de apt:

sudo apt-get update

Y finalmente instalamos Sublime Text 4

sudo apt-get install sublime-text

Eso es todo! cuando ingreses a Mostrar Aplicaciones podrás encontrar Sublime Text 4 allí:

Sublime Text en Mostrar Aplicaciones

Espero que este artículo les haya sido de ayuda.

Fuente: https://www.sublimetext.com/docs/linux_repositories.html#apt