Ir al contenido principal

Entradas

Mostrando las entradas de mayo, 2012

¡No más bloqueos! 🚫 Cómo cerrar conexiones de usuario en PostgreSQL

Hola a todos. Si alguna vez intentaste eliminar una base de datos en PostgreSQL y te topaste con el frustrante mensaje de que hay usuarios conectados, no te preocupes, hay una solución rápida y segura. Forzar el cierre de las conexiones es una tarea común en la administración de bases de datos para realizar tareas de mantenimiento, como la eliminación o el backup de una base de datos. Aquí te muestro los pasos para identificar y finalizar las conexiones de usuario que están bloqueando tu base de datos. Paso 1: Identificar las conexiones activas Lo primero que necesitas hacer es saber qué usuarios están conectados a la base de datos. Para ello, puedes usar la vista del sistema pg_stat_activity . Esta vista te proporcionará información valiosa sobre las sesiones activas, incluyendo el usuario, la base de datos a la que están conectados y el identificador del proceso (PID). Abre tu terminal o cliente de base de datos y ejecuta la siguiente consulta: SELECT * FROM pg_stat_activity; El res...

Obtén la URL de tu página JSP con JavaScript 🌐

¡Hola a todos! En el desarrollo web con JSP (JavaServer Pages), a menudo necesitamos saber la URL de la página actual o la de la página que la llamó. Esto es útil para tareas como la redirección dinámica, la creación de enlaces condicionales o simplemente para depurar el flujo de la aplicación. Aquí te muestro cómo obtener esta información de forma rápida usando objetos de la API de Servlet. 1. Obtener la URL de la página actual Para obtener la URL completa de la página JSP que se está ejecutando, puedes utilizar el método getRequestURL() del objeto request . Esta es la URL que ves en la barra de direcciones de tu navegador. <%= request.getRequestURL() %> Ejemplo: Si tu página se encuentra en http://localhost:8080/mi-app/pagina.jsp , esta expresión devolverá esa URL completa. 2. Obtener la URL que generó el llamado Si tu página actual fue accedida a través de una redirección o un forward desde otra página, es posible que necesites la URL de la página original. Para ello, pued...

¡Adiós errores genéricos! 👋 Cómo personalizar las páginas de error en Tomcat

Hola a todos. ¿Estás cansado de ver las aburridas y genéricas páginas de error de Tomcat ? Si quieres que tu aplicación tenga un diseño coherente incluso cuando ocurre un error, esta información te será muy útil. Aquí te muestro cómo personalizar las páginas de error 404 (no encontrado) y 500 (error interno del servidor) para que se adapten a la identidad de tu proyecto. El archivo web.xml : Tu punto de partida La forma más sencilla de lograr esto es editando el archivo web.xml , que es el descriptor de despliegue de tu aplicación. La configuración que coloques aquí afectará a todo el contexto de tu proyecto, asegurando que las páginas de error personalizadas se muestren de forma consistente. Para cada código de error que quieras manejar, debes agregar una etiqueta <error-page> dentro del archivo web.xml . <error-page>     <error-code>404</error-code>     <location>/error/error404.jsp</location> </error-page> <error-cod...

Arregla los guardados de SNES en tu PSP 🕹️

Hola a todos. Si tienes una PSP desbloqueada y te ha pasado que al guardar el progreso en un juego de SNES (como Super Mario 3) el emulador te da un error, no te preocupes, hay una solución muy simple. Esto ocurre porque el emulador no tiene las carpetas necesarias para guardar los archivos. A diferencia de cuando instalas el emulador NesterJ por separado, en los juegos que ya lo incluyen, a veces tienes que crear la estructura de directorios manualmente. Aquí te muestro cómo hacerlo en la memoria de tu PSP para que puedas guardar tus partidas sin problemas. El proceso Conecta tu PSP al computador y accede a la tarjeta de memoria (Memory Stick). Entra a la carpeta llamada PSP . Dentro de la carpeta PSP , entra a la carpeta COMMON . En este nivel, crea una nueva carpeta llamada NesterJ . Dentro de la carpeta NesterJ , crea otra carpeta llamada SAVE . La ruta final en tu Memory Stick debe ser exactamente la siguiente: ms0:/PSP/COMMON/NesterJ/SAVE/ Una vez que hayas creado estas carpet...

Arregla el plugin de Java en tu navegador de Linux ☕

Hola a todos. ¿Alguna vez instalaste el JDK o JRE en Ubuntu y notaste que el plugin de Java no funciona en tu navegador? Este es un problema común, especialmente con Chrome y Firefox, porque la instalación no siempre crea automáticamente los enlaces necesarios para que el navegador reconozca el plugin . Aquí te explico cómo solucionar este problema de forma manual, creando un enlace simbólico al archivo del plugin . 1. Ubica el archivo del plugin de Java Lo primero que necesitas es encontrar el archivo del plugin en tu instalación de Java. El archivo se llama libnpjp2.so . Su ubicación puede variar dependiendo de la versión y la arquitectura de tu sistema (32 o 64 bits). Una ruta de ejemplo podría ser: /home/tu_usuario/Aplicaciones/jdk1.6.0_30/jre/lib/amd64/libnpjp2.so Si no lo encuentras, puedes usar el comando find en la terminal para buscarlo: find / -name "libnpjp2.so" 2>/dev/null 2. Crea enlaces simbólicos en la carpeta de plugins del navegador Una vez que tengas...

Genera hashes MD5 y SHA1 con Apache Ant 📝

Hola a todos. En el desarrollo de software, es común necesitar generar hashes para verificar la integridad de los archivos. Si estás usando Apache Ant para tus proyectos y necesitas generar los hashes MD5 y SHA1 de un archivo .jar al momento de la compilación, te tengo una solución elegante y simple. Aunque existen programas de escritorio para esta tarea, automatizarla con Ant es mucho más eficiente, ya que te permite integrar el proceso directamente en tu flujo de trabajo. La solución en el build.xml La clave es usar la tarea checksum de Ant, que está diseñada para generar sumas de verificación de archivos. Aquí está el código que puedes agregar a tu archivo build.xml : <antcall target="checkSum">     <param name="path" value="<ruta>"/>     <param name="dir" value="<directorio>"/> </antcall> <target name="checkSum">     <basename property="_base" file="${path}...