18.06.2005

API para crear tus propias tags en LAMP

Curoseando por Google, me tope con esta libreria para añadir folksonomia a aplicaciones ya creads en PHP y MySQL, me viene como anillo al dedo =D.

Nota, en 5 dias cumplo 22 vueltas... A ver con que se ponen eh!

14:39 Anotado en Programación | Permalink | Comentarios (7) | Enviar a Email

31.05.2005

Classes de PHP

Un lugar con cientos de classes de PHP ya creadas, calificadas y ordenadas en categorias. No se como no lo encontre antes!

PHP Classes, mirror de Australia.

20:45 Anotado en Programación | Permalink | Comentarios (6) | Enviar a Email

18.05.2005

No uses .inc para tus includes

Ando medio desaparecido del mundo haciendo algunas cosas que mantienen muy ocupado, pero cada tanto surge alguna recomendacion al mundo exterior!

Solo vine para decir, no usen extensiones extrañas para los archivos que incluyen en sus aplicaciones, por que?

Piensen que en la carpeta /inc tienen alojados sus archivos a incluir en la aplicacion, como van a ser incluidos dentro de un .php supongamos, pueden tener cualquier extension, ahora que pasa si yo voy con mi browser a la carpeta /inc y esta el autoindex de apache activado? Voy a ver todos los includes.

Pero eso no es tan grave, lo que si es grave, es que si no son .php, al clickear sobre ellos voy a ver todo el codigo! Imaginense que feo seria que uno de esos sea el archivo de conexion a las bases de datos o de variables globales...

Hasta mi proxima aparicion en publico!

20:55 Anotado en Programación | Permalink | Comentarios (12) | Enviar a Email

12.05.2005

Usando el mod_rewrite de Apache

Si bien el buen Fede (no confundir con el Federico que no tiene nada de bueno :P) ya hablo de sus friendly URLs hace algun tiempo, dejo mi ejemplo y explicacion mas al estilo hagalo usted mismo con el que tanto me identifico :P

Que es mod_rewrite

Digamos que el Apache toma la URL ingresada en el navegador, y la transforma en otra, siguiendo ciertos parametros, de forma totalmente invisible y limpia para el cliente (osea, al cliente no le cambia la URL que ingreso).

Como lo hace? ni idea :P. Pero su funcionamiento es muy sencillo. y se logra en 3 pasos:

  1. Habilitar el mod_rewrite en el httpd.conf de apache
  2. Crear un documento .htaccess en el directorio donde vamos a tener friendly URLs
  3. Crear la logica que interpretara la URL

Para el primer paso, bastara con descomentar la linea que dice:

#LoadModule rewrite_module modules/mod_rewrite.so
Con solo quitar el # sera suficiente (y reiniciar Apache, no?).

Para el segundo paso, crear un archivo que se llame .htaccess con este codigo:

RewriteEngine on
RewriteRule post/([0-9-a-z-A-Z-_]+) index.php?post_id=$1
RewriteRule user/([0-9-a-z-A-Z-_]+) index.php?user_id=$1
Dejar el archivo en el directorio donde tambien pondremos al PHP (index.php en este caso) que leera esa variable:
print ("$post_id");
print ("$user_id");

Es todo! sino anda, saben donde quejarse ... en lo de Fede :P.

Para probarlo, suponiendo que colocaron los archivos en el directorio raiz de su sitio, deben ir a www.susitio.com/post/cualquier_cosa_que_pongan_va_a_aparecer_en_el_Archivo ;)

23:05 Anotado en Programación | Permalink | Comentarios (19) | Enviar a Email

04.05.2005

Cake: Framework de PHP basado en Rails

Siguiendo con el tema de frameworks (o entornos de trabajo) de PHP, me encontre con Cake (gracias a del.icio.us que me estoy haciendo muy adicto a eso!).

Ahora, que tiene de bueno esto? Que esta basado en la idea de Rails que es un framework que trabaja solo con Ruby. Michal Tatarynowicz (a partir de ahora lo lamara "el polaco"!) es el quie lo hizo, y espero que me ahorre el trabaje seguir con el mio!

Cosas tecnicas? sure:

  • Trabaja sobre PHP 4 o PHP 5
  • CRUD de SQL incorporado
  • Friendly URLs (wiii)
  • Templatizacion (que quiero ver que quisieron decir con eso).

Asi que esta noche a formatear, y mañana a instalar XAMP y Cake :).

18:01 Anotado en Programación | Permalink | Comentarios (4) | Enviar a Email

02.05.2005

Montar archivos en el servidor con PHP

¿Por qué montar y no subir? Porque me gusta mas!

En fin, dejo este script que hice para probar unas cosillas, funciona en PHP 4 o + y para hacerlo andar, van a tener que crear una carpeta llamada users en donde dejen el archivo.

Ahora, por qué lo hice? Porque no encontré ni un ejemplo claro para montar archivos con PHP, asi que voilá.

File Mounter 0.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es-ar" lang="es-ar">

<head>
<title>File mounter 0.1</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<!-- Control de versión 0.1 -- Diego F González -- http://im7.blogspirit.com -->

</head>

<body>

<?php

if ($File) {

print ("<p>Archivo: $File_name<br />");
print ("Tamaño: $File_size</p>");

if (copy ($File, "users/$File_name")) {

print ("<p class=\"error\">Tu archivo se cargó exitosamente en el servidor.</p>");

} else {

print ("<p class=\"error\">Falló el montaje del archivo al servidor.</p>");

}

unlink ($File);

}

?>

<h1>Montar archivos</h1>

<form action="index.php" method="post" enctype="multipart/form-data">

<input type="file" name="File" />

<input type="submit" value="Montar archivo en el servidor" />

</form>

</body>
</html>

Y para los flojos, aca está el zip con el código :).

22:10 Anotado en Programación | Permalink | Comentarios (13) | Enviar a Email

29.04.2005

Sonidos interactivos en web

No se muy bien como llegue al blog de Earful, que realmente lo recomiendo, en fin, me llamo la atencion el post sobre Sonidos de interfaz en paginas web.

Es una tecnica bastante simple, y como esta de moda ultimamente, combina XHTML, Flash y JavaScript para reproducir unos sonidillos en base a las acciones del usuario.

Este es el experimento que deja Joaquin Bernal, hagan un buen uso de esta tecnica, sino quieren ver todos los sitios con el ultimo sonido del experimento! :P.

19:09 Anotado en Programación | Permalink | Comentarios (6) | Enviar a Email

18.04.2005

Javascript en W3Schools

Que bueno que esta esto en W3Schools!

A que me refiero con esto :P.

Necesitaba un pequeño tutorial para ver algunas funciones en Javascript para manejar fechas y, busqueda en Google mediante, llegue al articulo de fechas en Javascript de W3Schools que no es nada del otro mundo, pero si los archivos de ejemplos con los que se puede practicar, me encantaron! :D

En mi caso particular, con el ejemplo de manejo de fechas fue mas que suficiente :).

17:59 Anotado en Programación | Permalink | Comentarios (7) | Enviar a Email

03.04.2005

Primeros pasos de una aplicación en PHP

Voy a contar « paso a paso » todo el proceso por el que pasará Buscabanda, pienso incluir tambien la programación, asi que en poco mas de una semana calculo yo que voy a tener una aplicación funcionando y todo el código y procesos por aca.

Esto no intenta ser un manual ni un texto de aprendizaje único de desarrollo web. Es sólo un documento práctico para aquellos que ya hacen algunas cosas en la web, pero que les falta ese « envión » para desarrollar sus propias aplicaciones.

Como siempre espero la participación de ustedes en el desarrollo, ya que lo voy a ir desarrollando « en vivo », espero contar con su feedback.

Definir qué va a hacer el sitio

Para empezar a programar, lo primero que hay que saber es: ¿qué va a hacer concretamente la aplicación?, por ejemplo:

  • Mostrará los anuncios publicados por los visitantes.
  • Estos anuncions estarán separados en categorías.
  • Un usuario puede crear / modificar / eliminar un anuncio.
  • Un usuario puede buscar anuncios por categoría y/o criterios específicos, como por ejemplo ubicación.
  • No se utilizará un sistema de registración de usuarios, se manejará todo via e-mail.

En principio con esas ideas es suficiente. Ahora la segunda cosa a pensar: ¿Cómo organizar la información?

Estructura de la información

Dicho de otra manera: ¿Cuántas tablas y columnas voy a necesitar para organizar todo esto? Generalmente cuánto menor sea el númreo de tablas y columnas mas eficiente será nuestra arquitectura, hablando de proyectos chicos como este, al menos.

En este proyecto, todo gira en torno a los anuncios, este es el « núcleo » de la aplicación. Entonces, seguramente la tabla principal será la que contenga los anuncios y toda la información que gira en torno a ellos. La primer pregunta es: ¿que información le voy a pedir a visitante para publicar su anuncio?

  • ¿De dónde es? - País y provincia, minimamente.
  • ¿Qué está buscando? - ¿Una banda o un músico?
  • ¿En qué estilo músical?
  • Si es un músico, ¿qué instrumento toca?
  • Un e-mail de contacto para manejar su anuncio.

¡Listo! No hay que abusar de las preguntas que se le hacen al visitante, a nadie le gusta responder cosas que no tienen un sentido aparente, y menos a travez de un formulario!

Ahora que sabemos que queremos saber, podemos crear la estructura. La tabla que contendrá los anuncios, se llamará posts.

Programar en ingles, creo que es de buena práctica ser consistente en el nombre de los elementos, tanto de la bas de datos, como de la programación (pe: variables, nombres de archivo y demas). Y al usar ingles, estamos evitando el uso de carateres « raros » y al mismo tiempo universalizando nuestro producto. Pero en definitiva, es mas una cuestión de gustos y comodidad.

En fin, asi se compondrá la tabla posts:

  • post_ID (int)
  • post_EMAIL (varchar)
  • post_PUBLISH (varchar)
  • post_END (varchar)
  • post_COUNTRY (int)
  • post_STATE (int)
  • post_LOCATION (varchar)
  • post_LOOKINGFOR (int)
  • post_ROLE (int)
  • post_STYLE (int)
  • post_COMMENTS (varchar)
  • post_DATE (varchar)
  • post_DATEFINISHED (varchar)
  • post_VIEWS (int)

Esta tabla usará a otras que la servirán para dinamizar y agilizar la administración de la información almacenada. Es el caso de post_COUNTRY, que almacenará la ID de país que tome de una futura tabla llamada countries, formada por dos columnas, country_ID, y country_NAME, lo mismo sucederá con post_STATE, post_LOOKINGFOR, post_ROLE y post_STYLE.

¡Basta para mí! Hoy ya adelantamos bastante, la próxima ya vamos a terminar la estructura de la información con esas tablas auxiliares y a crear la lógica para insertar registros en la base de datos.

15:20 Anotado en Programación | Permalink | Comentarios (2) | Enviar a Email