lunes, 12 de noviembre de 2012

Cuando SUBSTR no sirve buenas son las expresiones regulares

[Oracle / SQL] SUBSTR es una función muy útil para recortar cadenas de datos. Pero hay ciertos casos en que se queda corta. Por ejemplo, si necesitas solamente obtener el usuario de un correo electrónico dejando fuera el dominio y la arroba.

El largo de los nombres de usuario varia entonces se debe pensar en algo mas elaborado o ir al grano con las expresiones regulares.

REGEXP_SUBSTR permite extraer una cadena que cumple con una expresión regular.

Ejemplo de uso:
select REGEXP_SUBSTR('m-donoso_2007@dominio.cl','[_a-z0-9-]*') from dual;

Donde
  • m-donoso_2007@dominio.cl es el correo (fake por cierto).
  • [_a-z0-9-]* Es la expresión regular que toma solo los caracteres indicados símbolos -, _, letras minúsculas y números tantas veces como aparezcan en la cadena. Por lo que deja fuera todo lo que esta después de la arroba.
El resultado de arriba da:
m-donoso_2007



Mas información
http://j.gs/1aEh

domingo, 11 de noviembre de 2012

PHP Fatal error: Class 'XSLTProcessor' not found in

Estoy moviendo mis aplicaciones Web PHP a una maquina virtual Linux (Crunchbang) que cree en un MAC. Por lo que al momento de tratar de hacerlas funcionar van apareciendo errores que tienen que ver con herramientas que no están instaladas.

Ejemplo este error del parser XSLT:
PHP Fatal error: Class 'XSLTProcessor' not found in 


La solución (instalar el paquete)
sudo apt-get install php5-xsl

Este paquete (php5-xsl) proporciona un módulo para XSL, el cual uso para hacer transformaciones de archivos XML en PHP. Si quieres mas información pueden consultar este buen articulo:

Using PHP 5's XSL extension to perform XSL Transformations

Creando un repositorio con GIT

Como comente en otro articulo, instale una maquina virtual con Crunchbang. Esta distribución instala GIT  después de consultarlo en el dialogo de configuración (en la instalación). Por esto mismo no voy a hacer un articulo como instalar GIT. Pero si, como necesito crear un repositorio y mantener el control de mi código escribiré acerca de los demás pormenores.

Crear un repositorio desde fuentes que ya existen es super sencillo. Tengo una aplicación Web que se llama radiotaxi y esta en este directorio:
/var/www/radiotaxi 
 
Voy a ese directorio
cd /var/www/radiotaxi

Y comienzo el seguimiento de este proyecto
git init 

Se crea una carpeta oculta con el nombre .git
Initialized empty Git repository in /var/www/radiotaxi/.git/

Los repositorios creados con git init, no son visibles para otros equipos. Para que el repositorio sea visible o este descubierto se debe usar el comando:

git init --bare radiotaxi.git

Agrego los archivos
git add *.php

Agrego las carpetas
git add js/
git add css/
etc...


Subo los fuentes lo cual es parecido a SVN
git commit -m 'Initial Project' 

 
Un comando a tener en cuenta es git status permite saber si te queda algo por subir
git status

Descarga el Libro Pro GIT en varios formatos (PDF, EPUB, mobi) y en varios idiomas:
http://j.gs/1ZXD

sábado, 10 de noviembre de 2012

Maquina virtual visible en la red ( VirtualBox )

Hice una maquina virtual con una distro muy liviana llamada Crunchbang en donde tengo funcionando un servidor Web Apache.
Quiero que las aplicaciones Web publicadas en este servidor puedan ser consultadas desde otros dispositivos mi red (Ipad, iphone, notebooks, etc). Pero eso no es posible ya que no tengo una ip de red dentro de esa maquina.

La configuración por defecto  de parte de VirtualBox es la siguiente en lo que se refiere a la red:
Al revisar la ip con el comando ifconfig en la maquina virtual solo tengo una ip local. (tercera linea en la imagen inet addr:10.0.2.15).


Para disponibilizar la maquina virtual en la red se necesita cambiar de NAT (Network Address Translation) a Adaptador Puente (o Bridged networking).

NAT es un adaptador de red básico útil si solamente se requiere navegar, enviar correos y ese tipo de cosas. Para necesidades mas avanzadas esta el Adaptador Puente.

Ahora al revisar nuevamente la ip de la maquina virtual, esta tiene una que la hace visible en toda mi red (inet addr: 192.168.1.123).


De modo que ahora puedo consultar todas las aplicaciones que publique en esa maquina accediendo por la ip. Para este caso:
http://192.168.1.123/nombreaplicacion


Recursos
Sitio VirtualBox
Info sobre adaptadores de red en VirtualBox

file size exceeded the maximum (PHP / PHPMyAdmin)


Tengo un script sql que pesa 4 MB el cual quiero cargar en phpmyadmin. Pero por defecto el upload de archivos es de 2MB. Por ese motivo la aplicación muestra el siguiente mensaje cuando porfiadamente intento cargar el archivo.



No data was received to import. Either no file name was submitted, or the file size exceeded the maximum size permitted by your PHP configuration. 

¿Como aumentar el tamaño de archivo soportado?

Para eso necesitamos editar el archivo php.ini.

sudo vi /etc/php5/apache2/php.ini
o sudo gedit /etc/php5/apache2/php.ini

Ubicamos la siguiente linea dentro del archivo
upload_max_filesize = 2M

Y la dejamos de la siguiente forma
upload_max_filesize = 5M

Tambien es necesario darle un vistazo a esta linea que en mi caso esta bien.
post_max_size = 8M

Luego de realizar los cambios, reiniciar Apache
sudo /etc/init.d/apache2 restart

El resultado es el siguiente:

Esto fue hecho en una maquina virtual con la distro Crunchbang


Relacionado
Donde esta php.ini en Linux

viernes, 9 de noviembre de 2012

error: key does not contain a section: GIT

Me estoy pasando de hacer control de versiones con Subversion a GIT. Básicamente por moda, y en proyectos personales.

Y como la primera cosa que se hace después de instalar GIT  es indicarle el nombre de usuario y el correo electrónico, esto debido a que cada commit que hagamos necesita esta información. No tarde en generar un error:

error: key does not contain a section:

Estoy leyendo el libro Pro GIT (descarga gratis mas abajo) y las instrucciones son claras:

git config --global user.name "John Doe" 
git config --global user.email "johndoe@example.com"

Pero lo que hice fue entre difícil de explicar e ilógico, véalo con sus propios ojos:


Pero como he dicho anteriormente, si has llegado hasta acá es que también te paso lo mismo o algo similar, y lo que debes hacer es ingresar los datos tal cual la instrucción y lo que cambia lógicamente son los datos entre comillas que son los que necesitas configurar.

Si deseas revisar tu configuración, usa el siguiente comando:
git config --list



Al ver la captura me percato que cree una clave user.marcos la cual supongo no sirve de nada.

Entonces para eliminar la clave indeseada uso el siguiente comando:
git config --global --unset user.marcos 

El resultado al ejecutar nuevamente git config --list




Descarga el Libro Pro GIT en varios formatos (PDF, EPUB, mobi) y en varios idiomas:
http://j.gs/1ZXD

domingo, 4 de noviembre de 2012

Error: TypeError: field.prop is not a function (jQuery-Validation-Engine)

Uso JQuery-Validation-Engine para validar formularios de aplicaciones Web. Cuando empece a implementar esto, seguí no tan al pie de la letra las instrucciones y me encontré con que no funcionaba porque tenia un error.

Error: TypeError: field.prop is not a function

Este error no es tan evidente, ya que se debe acceder a la consola de errores de Firefox para encontrarlo (Mayús+Ctrl+J).

¿Cual es el problema con esto? Al momento de cargar los javascript deje mi antigua versión de Jquery y no la jquery-1.6.min.js que viene en la distribución de JQuery-Validation-Engine.

Al poner la versión jquery-1.6.min.js funciona perfecto.


Los scripts que cargue son los siguientes:



Código de Ejemplo
ValidationEngine Ejemplo