Mostrando las entradas con la etiqueta Programación. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Programación. Mostrar todas las entradas

1 de septiembre de 2008

Video: es dura la vida del programador



Un video que muestra muchas verdades del dia a dia de un programador.

Via: Microsiervos

1 de julio de 2008

Expresiones Regulares - Aprendiendo con ejemplos

Hace ya un tiempo escribí un post como introducción al tema de expresiones regulares, pero me faltaba publicar algunos ejemplos simples pero aplicables, así que voy a dejar y comentar algunos.


Direcciones IP {Corregido}

(^(2([0-4][0-9])|2(5[0-5]))|^([0-1]?[0-9]?[0-9]))\.(((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))\.){2}((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))$


Análisis:
  • (^(2([0-4][0-9])|2(5[0-5]))|^([0-1]?[0-9]?[0-9]))\. : Inicio de cadena (^), un número x que cumpla con: x >= 200 y x <= 249 (2([0-4][0-9]), ó cumpla con: x >= 250 y x <= 255 (2(5[0-5])), ó cumpla con x >= 0 y x <= 199 (([0-1]?[0-9]?[0-9])), seguido de un punto (\.)

  • (((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))\.){2} : lo mismo que el término anterior pero repetido exactamente 2 veces ({2})

  • ((2([0-4][0-9])|2(5[0-5]))|([0-1]?[0-9]?[0-9]))$ : lo mismo que el primer término, pero en lugar de estar seguido de un punto, el número debe estar seguido del final de la cadena ($)


Casos de prueba:
  • 0.0.0.0

  • 10.10.0.1

  • 192.168.0.1

  • 200.40.30.245

  • 255.255.255.255



Número del documento de identidad (UY)

^\d\.\d{3}\.\d{3}-\d$

Análisis:
  • ^\d\. : Inicio de la cadena (^), un dígito (\d) y un punto (\.)

  • \d{3}\. : 3 ocurrencias de dígito (\d{3}) y un punto (\.)

  • \d{3} : 3 ocurrencias de dígito (\d{3})

  • -\d$ : un guión (-), un dígito (\d) y final de la cadena($)



Casos de prueba:
  • 1.234.567-8

Valida el formato, no la validez del número.


URI sin parámetros

^(http://)((\w+\.)?(\w+\.)?\w+\.(\w{2,3})(\.\w{2})?)(/(\w+)(/\w+)?(\.(\w{3,4}))?)?$

Análisis:
  • ^(http://) : Cadena http:// ubicada al inicio (^)

  • ((\w+\.)?(\w+\.)?\w+\. : 0 ó 1 ocurrencias de una cadena de caracteres seguida por un punto ((\w+\.)?), 0 ó 1 ocurrencias de una cadena de caracteres seguida por un punto ((\w+\.)?) y una cadena de caracteres seguida por un punto(\w+\.)

  • (\w{2,3}) : una cadena compuesta de 2 o 3 caracteres

  • (\.\w{2})? : 0 ó 1 ocurrencia de un punto (\.) seguido de una cadena compuesta de 2 caracteres (\w{2}?)

  • (/(\w+)(/\w+)?(\.(\w{3,4}))?)?$ : ésta parte de la cadena es opcional, por eso está encerrada entre paréntesis y seguida del indicador de 0 ó 1 ocurrencia (?). Las partes que forman la cadena opcional son: una barra (/), seguida de una cadena de carracteres (\w+), 0 ó 1 ocurrencia de una barra (/) seguida de una cadena de caracteres (\w+), 0 ó 1 ocurrencia de un punto (\.) seguido de una cadena de 3 ó 4 caracteres (\w{3,4}) y el final de la cadena ($)


Casos de prueba:
  • http://www.google.com.uy

  • http://google.com.uy

  • http://mail.server.com.uy

  • http://www.google.com.uy/index.html

  • http://myserver.com.uy/contacto.htm

  • http://mail.server.com.uy/contacto/send.php

  • http://www.picandocodigo.net

  • http://www.picandocodigo.net/foro


URI con parámetros

^(http://)((\w+\.)?(\w+\.)?\w+\.(\w{2,3})(\.\w{2})?)((/(\w+/?)+(/?\w+)?((\.(\w{3,4})?))?)(\?(\w+=[\w\+\-]+)((&\w+=([\w\+\-]?)+)?)+)?)

Análisis:
  • ^(http://)((\w+\.)?(\w+\.)?\w+\.(\w{2,3})(\.\w{2})?)((/(\w+/?)+(/?\w+)?((\.(\w{3,4})?))?) : ídem anterior.

  • (\?(\w+=[\w\+\-]+) : signo de interrogación (\?) seguido de una cadena de caracteres seguida del signo de igual(\w+=) seguido de una cadena de caracteres compuesta de 1 ó más ocurrencias de cualquier letra y/o los signos de + y - ([\w\+\-]+)

  • ((&\w+=([\w\+\-]?)+)?)+)?) :1 o más ocurrencias de: signo separador de parámetros (&), una cadena de caracteres seguida del signo de igual (\w=) seguida de 0 ó 1 ocurrencia de una cadena de caracteres formada por cualquier letra y/o signos de + y - (([\w\+\-]?)+)


Casos de prueba:
  • http://www.server.com.uy/index.html

  • http://server.com.uy/contacto.htm

  • http://mail.server.com.uy/contacto/send.php

  • http://mail.server.com.uy/contacto/forms/scripts/send.php?m=value1&n=value2

  • http://www.google.com/search

  • http://www.google.com.uy/search?q=the+ninth+gate&hl=es

  • http://www.google.com.uy/search?q=the+ninth+gate&meta=

25 de abril de 2008

Nueva Comunidad de Programadores

www.picandocodigo.net
Picando Código estrenó foro, un foro que se inició con una invitación a 20 personas y que en aproximadamente 10 días ha demostrado que puede llegar a crecer como comunidad.

En estos pocos días ya se han planteado y resuelto dudas de programación y sistemas operativos, además se han iniciado intercambios de opiniones en el foro de flamewars... la verdad que se viene armando muy bien.

Link: http://foro.picandocodigo.net

14 de abril de 2008

Expresiones Regulares


Hace ya varios días que vengo realizando ciertas tareas en mi trabajo que me han hecho decir más de una vez "Que suerte que se inventaron las expresiones regulares".

La tarea se trataba, a grandes rasgos, de filtrar cadenas de caracteres que recibía desde un sistema y de acuerdo a ciertos parámetros, devolver un valor numérico... nada del otro mundo, sólo que éstas cadenas de caracteres no siempre eran iguales, sino que seguían ciertos patrones... razón de ser de las expresiones regulares.

Era una tarea que pude haber hecho con un conglomerado de if's o cases, pero utilizando las RegEx todo eso se redujo a 2 lineas de código por cada caso a filtrar y si bien eran bastante simples, creo que fue una buena manera de ver cómo te pueden salvar el día y a la vez ver que no hay que tenerles miedo, mucha gente piensa que son un monstruo indomable.

En mi caso no utilicé nada complejo, y dejo una pequeña referencia que para empezar es más que suficiente.

  • ^ - Comienzo de la cadena

  • $ - Fin de la cadena

  • [tk7] - Cualquiera de los caracteres t, k ó 7

  • [^tk7] - Cualquier caracter excepto t, k ó 7

  • [0-9] - Caracteres numéricos comprendidos entre 0 y 9

  • \ - Caracter de escape, se utiliza en conjunto para indicar un caracter especial como parte de la expresión. Por ejemplo \. significa que se busca el caracter . (punto).

  • . - Cualquier caracter, una sola ocurrencia

  • + - Una o más ocurrencias del caracter que le precede

  • ? - Cero o más ocurrencias del caracter que le precede


En wikipedia hay un buen artículo introductorio y recomiendo las herramientas RegEx Pal y RegExr para ir probando sus propias expresiones.

Un ejemplo simple sería una dirección de email:

^((\w|\.){2,}@)\w{3,}\.\w{2,3}((\.(\w{2}))?)?$

La expresión regular anterior presenta una forma muy simple de validar direcciones de email, aunque no es la más completa, permite validar una dirección sin entrar en detalles, permitiendo validar direcciones compuestas de
(3 o más caracteres alfanuméricos ó puntos)@(3 omás caracteres alfanuméricos).(2 o 3 caracteres alfanuméricos)(cero o una ocurrencia de (.(2 caracteres alfanuméricos)))


Yo no soy ningún experto en este campo, pero reconozco el poder que tienen y es uno de los temas que me gustaría dominar.

16 de junio de 2006

Felíz Cumpleaños a php

php
Más vale tarde que nunca, ¿cómo omitir tal evento?
php cumplió 10 11 años desde la aparición de la versión 1 el 8 de junio de 1996 1995.

En éstos 10 11 años, php se ha impuesto en el mundo de las aplicaciones web, permitiendo así grandes avances en éste campo.

Via: Microsiervos


Corrección: Me lié bastante con las fechas, pero gracias al comentario de
wicho, (a quien agradezco la corrección), he podido corregir este error. La verdad es que no se por qué motivo llegué a más de un enlace respecto a los 10 años de php, por lo que asumí que fue este año... supongo que eso me enseña a no precipitarme a publicar sin corroborar. Además de que en la anotación que tomé como fuente estaba la fecha...