Temas etiquetados como: ‘PHP’

Mac Os X con PHP y Apache

29 Abril, 2009

Como buen desarrollador web y acostumbrándome poco a poco al uso de Mac OS X, me he decidido a ponerme de lleno con el juego web que estoy desarrollando. Para hacer esto tengo que instalar o debería de instalar primero un IDE para el desarrollo, luego Apache y PHP, la base de datos no porque utilizo la de mi hosting y así evitar ciertos pasos que de momento y dado que esta en una fase alfa, me lo puedo ahorrar.

Como IDE necesito uno que tenga Intellisense (que autocomplete código) que funcione bien y reconozca todo, tanto variables y funciones, como clases, herencias, métodos estáticos, declaración de tipo de objeto por parámetro a un método, etc. por esto solo conocía 2, el Zend Studio que esta muy bien pero también es de pago y no barato precisamente y un poco lento, pero con mi ordenador no creo que hubiera problemas. El otro IDE es el Eclipse que aunque me suele consumir unos 400MB de RAM al tener 4GB no habría problema y es bastante completo y rápido, además de completar con muchos plugins que tiene el Eclipse. Por ultimo y de casualidad he descubierto que han terminado el plugin de NetBeans para usarlo como IDE de PHP y la verdad es que para mi gusto es el mejor, ya que es muy rápido, consume muy poco, tiene implementado todo lo que necesito en un bloque muy solido (no como Eclipse que tiene plugins que no terminan de encajar entre ellos) y lo mejor de todo, que para mi gusto y como IDE, me gusta mucho el NetBeans y su sistema de organización. Así que por esto me he quedado con NetBeans como IDE de PHP.

Una vez esta el IDE instalado, necesito el motor PHP y el servidor web Apache. Buscando en el disco duro encuentro que hay referencias a Apache y en la conflagración de sistema, hay un método de compartir que se llama "Compartir web", que de arrancarlo lo que hacemos es poner en marcha el servicio de Apache2. Ahora nos toca PHP, que para mi sorpresa también tiene viene instalado en Mac Os X por defecto, lo único que tenemos que hacer es descomentar la linea en la que carga el modulo de PHP y reiniciar Apache y ya tenemos todo listo y configurado para trabajar.

La verdad es una sorpresa encontrarme con Java y PHP y Apache ya instalado, algo que nos ahorra mucho tiempo a la hora de instalar todo lo necesario para trabajar

Por ultimo comentar que lamentablemente MySQL si deberemos de instalarla, aunque es mas sencillo que instalar que en Windows por lo que tardaremos lo que tardaremos en bajar el archivo de MySQL, hacer doble click y ejecutar los 2 o 3 archivos que lleva en su interior.

Controlar errores no controlados con C#

22 Septiembre, 2007

Algo que me gusta de PHP es su control de errores, ya que a pesar de no tener un tipo de error común, sino que tenemos que luchar contra errores y excepciones, dispone de dos funciones para controlaras como set_error_handler y set_exception_handler.

Cuando desarrollo aplicaciones en C# echaba de menos estos algún método similar para capturar excepciones, probé varias cosas lógicas, entre ellas antes de hacer nuestro Application.Run, englobarlo todo dentro de un try y catch al siguiente estilo:

try {
  Application.Run(new Formulario());
} catch {
  Application.Run(new Formulario());
}

Esto controlaba cualquier excepción, pero me cerraba la aplicación, una opción era volver a hacer un Application.run en el catch. Si fuera una calculadora hubiera valido, pero cuando se trata de una aplicación grande, no es una solución. Tampoco podemos dejarla al aire, puesto que cuando se lance una excepción, se cerrará la aplicación.

Buscando, buscando, encontré un evento llamado Application.ThreadException, que controlara todas aquellas excepciones que se produzcan dentro de Application.Run. Controlando este evento, no tendremos que catchear todo nuestro código, sino que definiremos una ventanita que recogerá la excepción y avisara al usuario de que se ha producido un error. Dentro de esta ventana, dependiendo de cuanto queramos trabajárnosla, podremos dar opción al usuario para enviar la traza de la excepción para que el equipo de desarrolladores, pueda reparar el error para futuras versiones o actualizaciones y así poco a poco, generar una aplicación grande desde el principio y robusta poco a poco si se van controlando aquellos errores que no son los más comunes.

A continuación os dejo el código de como controlar cualquier excepción desde el principio.

using System
using System.Windows.Forms;
using System.Threading;namespace myespacio {
 
  internal sealed class MiPrograma {
 
    [STAThread]
    private static void Main(string[] args) {
      Application.ThreadException +=
      new ThreadExceptionEventHandler
        (MiPrograma.excepcion);
 
      Application.Run(new Formulario());
    }
 
    public static void excepcion(object sender,
          ThreadExceptionEventArgs excepcion) {
      MessageBox.Show("Se ha producido un error");
    }
  }
}

Diferencias entre preg_match y ereg

9 Septiembre, 2007

Voy a explicar la diferencia entre estas dos funciones propias de php para evaluar y extraer información sobre cadenas mediante el uso de expresiones regulares o patrones.

Aparentemente estas 2 funciones son aparentemente iguales. Las diferencias entre ellas son mínimas, como por ejemplo que en preg_match es obligatorio establecer unas barras que delimitan el patrón, o que esta función devuelve un entero (int) de 0-n, en función de las coincidencias encontradas, mientras que ereg devuelve un booleano en función de si ha encontrado o no coincidencias.

Entonces. ¿Dónde radica la diferencia entre preg_match y ereg? Pues la principal diferencia ya que ambos también devuelven un array con las coincidencias por referencia, es la potencia. La función preg_match es muy potente y muy útil al igual que ereg, generalmente se suelen utilizar preg_match para extraer información de un texto y la función ereg para evaluar si un texto cumple un patrón o no, como es el caso de un email [a-zA-Z0-9]{1,}@[a-zA-Z0-9]{1,}\.[a-zA-Z]{2,3}. El problema viene cuando realizamos un patrón relativamente complejo sobre un texto extenso, es ahí cuando vemos la verdadera diferencia de potencia entre preg_match y ereg, ya que el preg_match podría llegar a tardar 60 segundos en analizarlo (hablo por propia experiencia) mientras que el mismo patrón evaluado con ereg, tardaría unos 5 o 6 segundos.

En conclusión podríamos decir que preg_match es una función ideal para analizar y realizar patrones sobre textos relativamente pequeños, tal como el contenido de una pagina web por ejemplo, y ereg es para evaluar patrones rápidos como palabras o emails y cuando el patrón a evaluar es muy muy grande.