lunes, 22 de febrero de 2010

Charlas PHP

El Grupo PHP, comunidad de usuarios PHP de Argentina, se complace en ofrecer las primeras charlas organizadas en el marco de su ciclo de conferencias. En este evento, se ofrecerán una diversidad de tópicos con el objetivo de compartir conocimiento, y afianzar los lazos de la comunidad. La agenda de tópicos incluye charlas introductorias, intermedias, y avanzadas.

La reunión se realizará el Sábado 6 de Marzo, de las 9:30 a las 15:00, en el Hotel Las Naciones, Corrientes 818, piso 2. La pre-inscripción al evento es obligatoria.

Para ver la agenda detallada e inscribirse acceder a:

http://grupophp1.eventbrite.com

Más información sobre el Grupo PHP en:

http://grupophp.com.ar

¡Los esperamos!

miércoles, 9 de diciembre de 2009

Locale en Ubuntu

Usar setlocale no es fácil. Hay que saber el nombre exacto del paquete de idioma que queremos usar.

En ubuntu, para ver la lista de opciones disponibles podemos hacer "locale -a". Para instalar un lenguaje nuevo, "apt-get install language-pack-**-base" y luego reiniciar el apache.

jueves, 5 de junio de 2008

martes, 4 de marzo de 2008

Un ejemplo de modelos

En unas pocas horas creé una trivia en CodeIgniter que permite mandar preguntas y contestar las que otros usuarios envíaron.

El código es simple, pero lo interesante que quiero mostrar es el funcionamiento de los modelos. En application/libraries/MY_Model.php se extiende la definición de los modelos. Ahí tenemos los métodos "get", "fetchlist" y "count" que reciben el tipo de objeto y después un array con los filtros que se quieren aplicar.

¿Cómo se traducen los filtros?
En general, los filtros son condiciones de base de datos. Pero también se permiten "limit", "start", "orderby" y "orderbydir" que son para limitar la cantidad de registro, cambiar el inicio (offset), la columna por la que se ordena y la forma (ASC/DESC), respectivamente.
Y aún más, se pueden definir filtros propios en cada modelo. Con definir un método filter se pueden establecer condiciones propias. El método recibe tres argumentos: tipo de objeto, clave y valor. La función debe devolver TRUE en caso de que tenga un manejo propio del filtro o FALSE si no. En el ejemplo, se puede ver esto en el modelo "trivia".

¿Qué otros métodos tenemos definidos para los modelos?
Los métodos save, update, insert y delete reciben un objeto y lo guardan en la base de datos. Estos objetos deben ser objetos que extiendan a la clase Data_object, ser prefijados con "obj_" y llamarse como la tabla que le corresponde. Cada uno debe definir los atributos que se guardarán en las columnas de la base de datos.

Descargar ejemplo

martes, 26 de febrero de 2008

Cacheando datos

Si estamos buscando la forma de mejorar la performance de nuestro sitio web, el caché es la clave.

Hay muchas formas de hacerlo, lo más común es cachear páginas enteras, pero a veces esto no es posible. En estos casos, lo principal es localizar los procesos más lentos y tratar de guardar su resultado. Para ello, lo mejor es usar memcache que nos permite guardar una variable (serializada, como string) y recuperarla muy rápidamente.

Cómo solución más genérica se puede implementar una clase que reciba y guarde datos, permitiendo cambiar la forma de hacerlo (memcache, base de datos, archivos) por si es necesario migrar el código a un servidor que no cuenta con la tecnología necesaria.