Publicado el Deja un comentario

Quitar acentos mediante una consulta SQL en Oracle

Supongamos que queremos crear «slugs» para nuestras URLs con los nombres de productos que contienen acentos. Pero ¿que es un slug? Bueno, un slug es colocar el titulo de una página en una URL válida para que de el usuario con sólo verla se de una idea de el contenido que puede encontrar en esa página.

Supongamos que la página anuncia nuestro producto «Computadora Portátil Lenovo X72»; el slug para está página sería «computadora-portatil-lenovo-x72». Por lo general los «slugs» no llevan acentos, por lo tanto necesitamos reemplazarlos por su vocal base (á por a en el ejemplo anterior) y los espacios por los guiones.

Para específicamente el ejemplo anterior, utilizaríamos una combinación de las funciones TRANSLATE para reemplazar los espacios y acentos y la función LOWER para convertir el texto a minúsculas así:  

select Lower(Translate(‘Computadora Portátil Lenovo X72’,’á ‘,’a-‘)) from SYS.Dual;

Daría como resultado:

computadora-portatil-lenovo-x72

La función TRANSLATE trabaja parecido a la función REPLACE con la diferencia que la primera, permite reemplazar distintos caracteres a la vez como se puede observar en el ejemplo anterior (los caracteres ‘á’ fueron reemplazados por ‘a’  y los espacios por guiones ‘-‘).

Si lo que queremos es hacer una consulta más general para reemplazar los acentos en cualquier cadena de caracteres, emplearíamos una consulta SQL como esta:

select Translate(‘José Ángel Méndez Zúñiga’,’ÁáÉéÍíÓóÚú’,’AaEeIiOoUu’) from Dual;

Lo que daría como resultado:

Jose Angel Mendez Zuñiga

Espero y les sea útil.

¡Hasta la próxima!

 

 

Publicado el Deja un comentario

Address already in use: AH00072: make_sock: could not bind to address 0.0.0.0:443. Apache.

De pronto apareció este mensaje en mi sitio web seguro que había estado funcionando sin problemas. El puerto seguro 443 no estaba siendo usado por ninguna aplicación sin embargo al intentar iniciar el servicio httpd éste no arrancaba y me daba el error descrito en el título de este entrada. ¿Me lo hackearon? No. Resulta que se instaló una actualización de Apache y reemplazo algunos archivos de configuración.

Cuando Apache detecta que en dos o más archivos de configuración existe la directiva Listen 443 arroja este error. Así que eliminando dichas lineas y dejando sólo una en todos los archivos de configuración se soluciona el problema.

¡Hasta pronto!

Publicado el Deja un comentario

Windows 10 no conecta a carpeta o unidad compartida. Samba versión 1.0.

caracteristicas-de-windows-samba-1

Tenía tiempo usando Windows 10 y conectándome sin problemas a una NAS (disco en red) a través de carpetas compartidas y de pronto un día ya no me lo permitió. Al parecer, una nueva actualización de Windows 10 desactiva el protocolo Samba version 1.0 ya que considera que no es seguro.

Si su NAS sólo permite este protocolo, es necesario activar este protocolo nuevamente en Windows. Para ello buscamos «Características de Windows» y seleccionamos en el menú «Activar o desactivar las características de Windows».

caracteristicas-de-windows

Una vez abierta la ventana «Características de Windows» buscamos la opción «SMB 1.0/CIFS File Sharing Support» y la marcamos.  Damos «Aceptar».

caracteristicas-de-windows-samba-1

Reiniciamos la computadora y ya debemos poder conectarnos a unidades compartidas que usan el protocolo Samba 1.0.

¡Saludos! 

Publicado el Deja un comentario

Como instalar python 3 en Centos 7

Por defecto Centos 7 viene con la versión 2 de Python, por lo tanto hay que instalar algunos repositorios para poder instalar Python 3. Ejecute las siguientes instrucciones con el usuario root:

# yum install epel-release
# yum install https://centos7.iuscommunity.org/ius-release.rpm

Una vez instalados los repositorios, procedemos a instalar python 3:

# yum install python36u python36u-devel python36u-pip
# pip3.6 install -U pip
# pip install -U virtualenv

Hasta aquí, podemos llamar python 3 ejecutando el comando python3.6. Si queremos llamarlo del modo tradicional, ejecutar pyhton3, podemos crear un soft link de la siguiente manera:

# ln -s /usr/bin/python3.6 /usr/bin/python3

Comprobamos que python 3 quedó bien instalado:

# python3 –version

Si todo es correcto, el comando anterior debería darnos la versión de pyhton 3 instalada.

¡Hasta luego!

Publicado el Deja un comentario

Error al ejecutar pip3 en Ubuntu 18.04: ImportError: cannot import name ‘main’.

Error pip3

Al intentar conocer la versión de mi pip3 instalado, Ubuntu 18.04 me arrojaba el siguiente error:

$ pip3 –version
Traceback (most recent call last):
File «/usr/local/bin/pip3», line 7, in
from pip import main
ImportError: cannot import name ‘main’

Al parecer es un bug que salta al actualizar a la versión 10 de pip3. Para solucionarlo ejecuté las siguientes instrucciones que encontré aquí (también explica la causa) en una terminal:

sudo python3 -m pip uninstall pip && sudo apt install python3-pip –reinstall

Una vez ejecutada debe funcionar bien este comando y no arrojar ningún error.

¡Saludos!

Publicado el Deja un comentario

Ubuntu: Se ha detectado un problema en un programa del sistema. Solución.

¿Cada vez que enciendes tu computadora con Ubuntu te sale este mensaje? Esto es debido a que anteriormente un programa falló. Cuando un programa falla, a veces deja un archivo crash en la ruta /var/crash de nuestra computadora.

Cada vez que que encendemos nuestra computadora el sistema checa esa ruta y si encuentra algo ahí manda el mensaje mencionado. Para evitar que no siga saliendo podemos borrar el contenido de esa carpeta o ruta ejecutando desde una terminal la siguiente instrucción:

sudo rm /var/crash/*

Una vez hecho esto, la próxima vez que encendamos el equipo, ya no aparecerá el mensaje.

¡Saludos!

Publicado el Deja un comentario

Como acceder al mismo tiempo a internet por cable y a computadoras de mi red privada

Debido a que el internet que proporciona una compañía por medio de su red interna es demasiado lento por causa del número de usuarios que lo accesan, uno de los Departamentos de dicha compañía decidió contratar internet por cable para su uso exclusivo. Todo iba bien hasta que los usuarios de dicho Departamento, que se conectaban al cable-modem por vía inalámbrica, tuvieron problemas al intentar conectarse a servidores de la red interna de la compañía vía ethernet.

En lugar de buscar las direcciones IP de los servidores en la red interna de la compañía, dichas direcciones eran buscadas en la red de internet proporcionada por el cable-modem, por lo cual resultaba imposible conectarse. Todas las computadoras de esta red utilizaban Windows.

Para corregir este problema es necesario utilizar el comando ROUTE de Windows. Para ejecutarlo es necesario abrir una ventana de comandos de Windows con permisos de administrador. Una vez abierta la ventana de comandos de Windows ejecutamos la siguiente sentencia:

route add <IP_DEL_SERVIDOR> mask 255.255.255.255 <IP_PUERTA_DE_ENLACE> -p

Donde <IP_DEL_SERVIDOR> es la dirección IP del servidor de la red interna al cual queremos conectarnos. <IP_PUERTA_DE_ENLACE> es la IP de la puerta de enlace o gateway de la red interna a la que estamos conectados vía ethernet. Si todo va bien el comando ROUTE deberá regresar la palabra «Correcto» como se muestra en la imagen siguiente:

Es importante no olvidar incluir el parámetro -p para que esta ruta quede permanente registrada en la computadora y no se tenga que dar el comando cada vez que se apague y encienda la computadora.

Espero y les sea útil. ¡Saludos!

Publicado el Deja un comentario

Cómo comprobar la memoria ram en Windows 10.

En Windows 10 existe una herramienta para comprobar la memoria de nuestra computadora: «Diagnóstico de memoria de Windows».

Para acceder a esta herramienta buscamos «Diagnóstico de memoria de Windows» en la caja de búsqueda:

Seleccionamos la herramienta en el menú que aparece. Nos aparecerá el siguiente diálogo:

Seleccionamos la primera opción si deseamos reiniciar y comprobar la memoria en estos momentos o la segunda opción, si lo que deseamos es terminar nuestro trabajo y que la comprobación se haga la próxima vez que nuestro equipo se encienda nuevamente. Si no queremos llevar a cabo la comprobación, simplemente oprimimos el botón «Cancelar».

Al iniciar o reiniciar aparecerá un diálogo en modo gráfico donde ira mostrando el avance de la comprobación de memoria. Puede tardar un tiempo dependiendo d la cantidad de memoria que se tenga instalada. Al final de la comprobación, el equipo se reiniciará automáticamente y encenderá de forma normal.

Al terminar de cargar el sistema, en la barra de tareas, específicamente en el sección de Notificaciones, aparecerá un mensaje de si encontró o no errores en la comprobación de la memoria. Si hubo errores, podemos dar clic sobre el mensaje y nos mostrará el detalle de los errores encontrados.

Espero y les sea útil. ¡Feliz año y hasta pronto!

Publicado el Deja un comentario

Error ORA-30036 al ejecutar SHRINK sobre una tabla

Después de borrar millones de registros de una gran tabla en Oracle y tratar de reclamar espacio de dicha tabla, el comando SHRINK SPACE no terminaba y marcaba el error:

ORA-30036: unable to extend segment by 8 in undo tablespace ‘UNDO’.

El tamaño de la tabla no era tan grande como el espacio reservado para el tablespace UNDO (aquí se almacenan los registros para hacer un rollback de una transacción), sin embargo se llenaba y marcaba el error mencionado.

Cuando se ejecuta la sentencia ALTER TABLE … SHRINK SPACE es necesario también tomar en cuenta el tamaño de los índices de la tabla. Así que la suma del tamaño de la tabla de la cual necesitaba reclamar espacio y el tamaño de todos sus índices, si que superaba el espacio del tablespace UNDO por eso lanzaba el error.

La solución, borrar todos los índices (DROP INDEX) de la tabla, reclamar el espacio (SHRINK SPACE) de la tabla y volver a crear los índices.

Espero y les sirva mi experiencia.

¡Saludos!

Publicado el Deja un comentario

Las rutas (routes) no funcionan en Laravel.

En una aplicación web desarrollada con el framework Laravel (PHP) el ruteo (routing) no funcionaba, enviaba a una página inexistente. En este caso el problema era una configuración de Apache 2 donde estaba publicada dicha aplicación y no de la aplicación en si.

La solución fue la siguiente:

Se cambió la directiva AllowOverride del valor None a All dentro de la directiva Directory que contiene la trayecto de directorios donde se encuentra publicada la aplicación, dentro del archivo de configuración de Apache 2 (httpd.conf). En nuestro caso la aplicación se encontraba dentro del directorio raíz.

No olviden reiniciar el servicio de Apache 2 para que refleje los cambios.

Espero y les sirva.

¡Hasta la próxima!