Archive for the ‘PHP’ Category

Prism, tu aplicacion web a un click.

googlecalendar550Si eres un desarrollador de aplicaciones web, seguro te topaste con algunos usuarios que no sabían usar los favoritos del navegador o tenían paciencia para trabajar con algo en su navegador sin que recordaran que es la misma interfaz que usan para ver su mail y se sintieran en un mundo de mentiras. Como parte de ayudarnos un poquito la gente de Mozilla tienen un proyecto llamado Prism, el cual es un navegador basado en mozilla pero con la ventaja de que al abrirse solo se ve la aplicación especificada (url). Tambien puede ser utilizado para ver tu aplicacion favorita sin tener que agrir directamente el navegador web.

Esto es una gran ayuda, en el sentido de que pueden ver su aplicación como si de una Windows se tratase, aunque protejas el codigo, cuando se desarrolla una aplicacion web se necesita que sea rapida, evite errores, sea facil de encontrar, etc.

A continuacion listo algunas de las ventajas que he visto en esta aplicacion.

  • Facil de utilizar para el usuario, solo un click y se abre una ventana con la aplicación.
  • Evita el click derecho del curioso, en el sentido de que no hay opciones especiales como ver html, etc.
  • El backspace en el espacio en blanco que hace ir para atras en una pagina esta desabilitado, por lo que se evita el tener que usar javascript. Tenia un usuario que siempre olvidaba que un campo era readonly, por tal motivo cuando iva a borrar aca iva hacia atras, esto me saco de ese apuro.
  • Sensación de realidad, el usuario se olvida que de una aplicacion web se trata.
  • Configurable, al punto de no mostrar ni barra de direcciones ni nada, solo la aplicación.
  • Compatible con los standares reales, css, javascript funcionan bien con logica.

Son muchas, pero como todas las cosas buenas tienen sus peros, hasta ahora solo me han afectado dos:

  1. Con los certificados es un poquito trucu, hay que hacer un truco para aceptarlo cuando el certificado que usas no es de una identidad verificable y lo generas por tu parte.
  2. No permite cambiar la url, a algunas personas le molesta configurar cada vez para un nuevo tipo de url, pero para lo que he trabajado con el me ha servido.

Para saber mas puede visitar la pagina oficial http://labs.mozilla.com/2007/10/prism/

Manejo de cadenas en PHP.

El manejo de cadenas de texto es algo que tarde o temprano nos toca usar en cualquier lenguaje de programacion. Tanto si estas empesando o no recuerdas bien, aca hay un recuento de las funciones mas utilziadas para estos fines.

substr()

Esta cadena devuelve una porción de la cadena de texto. Su sintaxis es la siguiente:
substr(cadena_a_cortar, posicion_inicial, largo_devuelto)
ejemplo:

<?php

$palabra = "Multimedia";
$palabra2 = substr($palabra, 2, 3);
echo "<p>$palabra2</p>";

//Esto devolvería la cadena "lti".
?>

No hay que olvidar que las cadenas en PHP son un arreglo unidimensional donde el primer elemento tiene el subindice 0, que en nuetro caso es la posición.

El tercer argumento (largo) es opcional, y en ese caso la cadena devuelta es toda la cadena a partir de la pocición indicada en la función substr(). Ejemplo:

<?php

$palabra = "Multimedia";
$palabra2 = substr($palabra, 2);
echo "<p>$palabra2</p>";

//Lo cual devolvería la cadena "ltimedia".
?>

trim()

La función trim limpia todo los espacios blancos, saltos de carro y tabuladores que hayan a los lados de una cadena de texto. Ejemplo:

<?php
$cadena1 = " La Araucana ";
$cadena2 = trim($cadena1);
echo "<p>$cadena2</p>";
?>

Si se quiere limpiar sólo al final de la cadena se usa la función chop() y si se quiere limpiar los espacios blancos al comienzo se usa la función ltrim()

strlen()

Esta función devuelve el largo de una cadena de texto. Ejemplo:

<?php
$cadena = "Instituto Las Americas";
$largo = strlen($cadena);
echo "<p>$largo</p>";
?>

strtolower() y strtoupper()

Para trasnformar una cadena a puras minúsculas se usa strlower(). Si se queire trasnformar la cacena a mayúsculas se usa strtoupper(). Ejemplo

<?php

$cadena1 = "Computación";
$cadena2 = strtolower($cadena1);
echo "<p>$cadena2</p>";
$cadena3 = strtoupper($cadena1);
echo "<p>$cadena3</p>";

?>

ereg() y eregi()

Estas fuciones sirven para ver si una cadena está dentro dentro de otra.Su sintaxis es:

ereg(cadena_a_buscar, cadena_donde_se_busca)

Por ejemplo:

<?php

$texto1 = "Sacerdotes";
$texto2 = "SACERDOTES";
$buscar = "cerd";

if(ereg($buscar, $texto1)) echo "<p>se ha encontrado la            cadena $buscar en la cadena $texto1</p>";
else echo "<p>no se ha encontrado la cadena $buscar en la            cadena $texto1</p>";

if(ereg($buscar, $texto2)) echo "<p>se ha encontrado la            cadena $buscar en la cadena $texto2</p>";
else echo "<p>no se ha encontrado la cadena $buscar en la            cadena $texto2</p>";

?>

Hay que hacer notar que erg() busca exatamente la cadena que se busca haciendo coincidir mayúsculas y minúsculas. En cambio eregi() busca sin distinguir entre mayúsculas y minñusculas. Ejemplo:

<?php

$texto1 = "Sacerdotes";
$texto2 = "SACERDOTES";
$buscar = "cerd";

if(eregi($buscar, $texto1)) echo "<p>se ha encontrado la            cadena $buscar en la cadena $texto1</p>";
else echo "<p>no se ha encontrado la cadena $buscar en la            cadena $texto1</p>";

if(eregi($buscar, $texto2)) echo "<p>se ha encontrado la            cadena $buscar en la cadena $texto2</p>";
else echo "<p>no se ha encontrado la cadena $buscar en la            cadena $texto2</p>";

?>

ereg_replace() y eregi_replace()

Estas funciones buscan una cadena determinada dentro de otra y la remplazan. Su sintaxis es:

ereg_replace(cadena_a _buscar, reemplazo, cadena_donde_buscar)

Ejemplo:

<?php

$buscar = "Manual";
$reemplazar = "MANUAL";
$cadena1 = "Este es un minimanual de PHP";
$cadena2 = "Este es un miniManual de PHP";
$cadena1 = ereg_replace($buscar, $reemplazar, $cadena1);
echo "<p>$cadena1</p>";
$cadena2 = ereg_replace($buscar, $reemplazar, $cadena2);
echo "<p>$cadena2</p>";

?>

ereg() busca la cadena exacta haciendo coincidir mayúsculas y minúsculas. En cambio eregi_replace() no hace distinción entre mayúsculas y minúscula.
Ejemplo:

<?php

$buscar = "Manual";
$reemplazar = "MANUAL";
$cadena1 = "Este es un minimanual de PHP";
$cadena2 = "Este es un miniManual de PHP";
$cadena1 = eregi_replace($buscar, $reemplazar, $cadena1);
echo "<p>$cadena1</p>";
$cadena2 = eregi_replace($buscar, $reemplazar, $cadena2);
echo "<p>$cadena2</p>";

?>

explode()

Esta función divide una cadena de texto en base a una cadena patrón devolviendo un arreglo constituido por los troxo obtenidos. Su sintaxis es:

explode(cadena_patron, cadena_a_dividir)

Ejemplo:

<?php

$linea = "Walter|Velásquez|98771338|Santiago Amengual 454|";
$datos = explode("|",$linea);

$nombres = $datos[0];
$apellidos = $datos[1];
$telefono = $datos[2];
$direccion = $datos[3];

echo "<p>Nombres: $nombres<br>
Apellidos: $apellidos<br>
Teléfono: $telefono<br>
Dirección: $direccion<br>
</p>";

?>

Enumeradores en PHP (como en C#)

En el mundo de la programacion los enumeradores son utilizados, para mantener una mayor claridad en el codigo, ya que evitan en tener cosa amarradas a un numero fijo especifico, lo cual hace el codigo mucho mas facil de mantener, pero no me pongo a inventar y le dejo una definicion (tipo microsoft) de que es un enumerador:

La palabra clave enum se utiliza para declarar una enumeración, un tipo distinto que consiste en un conjunto de constantes con nombre denominado lista de enumeradores.

Ejemplo en C#

enum Dias{ Dom = 1, Lun, Mar, Mie, Jue, Vie, Sab};
int x = (int)Dias.Mar;
Console.WriteLine(x);
//Esto produce como salida un 3.

Opcionalmente se puede establecer el orden, pero por defecto se inicia en cero, en el ejemplo anterior se dice que el primer elemento vale 1, los demas toman los valores por secuencia, si no tiene valor predefinido incrementa el valor de su antecesor.

Como PHP, no maneja nativamente el concepto de enumceradores, esta es una manera de implementarlo, aunque no la mejor, pero algo es algo.

Ejemplo de como aplicar lo anterior en php:


$miEnumeradorDias = array ("Dom" => 1, "Lun" => 2, "Mar" => 3, "Mie" => 4, "Jue" => 5, "Vie" => 6, "Sab" => 7);
$d = $miEnumeradorDias ["Mar"];

echo $d;

//Esto produce 3

Otro ejemplo similar:


$otroEnumerador = array("rojo" => 1, "azul" => 2, "amarillo" => 3);
$a = $otroEnumerador["azul"];

echo $a;

//Esto produce 2

Existen otras formas de emular los enumeradores, pero mientras esta me saco del apuro que tenia. Luego con tiempo vere si implemento la solucion planteada aca:

http://it.toolbox.com/blogs/macsploitation/enums-in-php-a-native-implementation-25228