September 26th, 2008 Category: python
8 Comments »
Hoy llego a mis mano el libro de Django 1.0 en castellano. Django es un framework para python que viene reclutando adeptos por todos lados.
Quizas en unos dias este desarrollando algo con unos amigos en django y este libro va a ser mi guia.
Autores: Adrian Holovaty y Jacob Kaplan-Moss
Descarga | Manual de Django 1.0
September 26th, 2008 Category: php5 Zend
2 Comments »
Cuando venis codeando durante mucho tiempo de una forma, respetando esos estandares que leiste por ahi, o que te parecio mejor implementar, o simplemente en tu trabajo te dijeron es asi, te acostumbras y mucho. Por eso me parecio excelente la herramienta para formatear codigo en Zend Studio for eclipse.
No se si PDT, u otros eclipses lo tienen, pero en ZSE anda muy bien, y tiene como atajo, ctrl + shift + f.
La idea es la siguiente, creas desde el menu vas a windows->preferences…->PHP->Formatter. Ahi vas a tener la siguiente info.
Aca tenemos una vista previa de como quedaria nuestro codigo si aplicamos el formato de codigo. Por default ZSE no elige como default el profile de Zend Framework, pero podemos activarlo seleccionandolo desde active profile, una vez seleccionado Apply, Ok, y ctrl + shift + f, y vamos a poder formatear nuestro codigo bajo la convencion de Zend
Ademas como herramienta extra podemos editar y crear nuestras propias convenciones, exportar e importar las configuraciones, a xml.
Hay algunas cosas que no me gustaba como quedaban y decidi editarlas, para hacerlas mas claras. Por ejemplo, con la configuracion default de Zend Framework cada vez que escribo un metodo, funcion, o cualquier cosa que lleve parentesis, todo el contenido me lo deja pegado, y a mi me gusta que le deje un espacio, lo mismo para el igual y dentro de los corchetes. Esto y algunas cositas mas, y ahora quedo casi perfecto.
Comparto con ustedes el xml, si lo mejoran me avisan.
Descarga | code_convenction.xml
September 26th, 2008 Category: offtopic
1 Comment »
Estuve navegando el blog desde un iphone, y se ve realmente bien, asi que todos los que tengan uno no van a tener problemas
Aca les dejo una foto desde mi nokia 6131
September 25th, 2008 Category: codigo php5
1 Comment »
Supongamos que tenemos un array con los indices separados por underscore “_”, y necesitamos transformar esos indices a camelCase, esto puede surgir por la necesidad que los nombres de nuestro codigo sigan el standar de la gente de Zend, cuando obtenemos un array de la base de datos, esos datos vienen con la normalizacion de la base, que generalmente es CAMEL_CASE, esto es un problema porque cuando queramos leer los datos de esa tabla tenemos que hacer algo como $row['CAMEL_CASE'], y no va con nuestro “Standar de buenas practicas”, si es por este motivo o algun otro podes usar esta funcion que transforma los indicies de CAMEL_CASE a camelCase. Es la forma mas optima que encontre, si alguno puede aportar algo mejor, podemos optimizarla mas, y conseguir mejores resultados.
$value ) {
$key = str_replace( ' ', '', ucwords( preg_replace('/[^A-Z^a-z^0-9]+/', ' ', $originalKey )));
$key[0] = strtolower($key[0]);
$camelCaseArray[ $key ] = $value;
}
return $camelCaseArray;
}
}
?>
y la usamos de la siguiente forma
'Nestor', 'LAST_NAME' => 'Kirchner');
$rowNormalized = Me_Utils_Array::keyArrayToCamelCase( $row );
print_r( $rowNormalized );
// Array ( [firstName] => Nestor [lastName] => Kirchner )
?>
September 19th, 2008 Category: Programacion
2 Comments »
Hace unos meses lei un libro muy viejo de la editorial de Microsoft, muy bueno y recomendablel, Code Complete, ahora salio una segunda version de este libro contemplando POO, y otros temas mas actuales, seria interesante que el que pueda y quiera los adquiera porque nos abren la cabeza un poquito con respecto a como se ve nuestro codigo, y como lo interpretan los demas, y porque no, nosotros mismos. Hay viendo mi reader, me encontre con un articulo del blog Diario de programacion, un articulo sobre el unico punto de salida. Lo interesante de este articulo es el link que dan al final, gracias a ellos consegui un documento, con una idea muy parecida a la de code complete, pero en un claro castellano, lo cual me gusto mas.
Voy a compartir con ustedes este documento, y un enlace para descarga directa. Obviamente esta bajo licencia creative Commons
.
Link | descarga
nota: por alguna razon, Scribd no me dejo subirlo quizas era demasiado grande
September 16th, 2008 Category: php5 Zend
1 Comment »
Matthew Weier O’Phinney realizo esta doc, con la intencion de establecer un standar unico para los desarrolladores de PHP, no solo en el codigo sino en la forma de trabajar.
Es hora de que los que trabajamos en PHP emepezemos a darle importancia a este tipo de documentos.
September 12th, 2008 Category: Zend Framework
6 Comments »
Ayer estrenamos el primer portal de noticias hecho exclusivamente con Zend Framework.
Titulos Regionales, es el nombre que le dio el cliente al portal.
Todavia nos falta mucho desarrollo, y varios detalles. Pero sobre la marcha vamos a ir corrigiendo los problemas, y cosas que falten.
Activar opciones de SEO, que por lo que estuve viendo en ZF, lo puedo solucionar muy facil sin la necesidad de agregar reglas de ruteo al Zend_Route, y .htaccess, ya que si le agrego un parametro final a las url, con el nombre del titulo .html, las toma igual, porque interpreta a ese nombre como un parametro mas por get
.
September 12th, 2008 Category: eventos
3 Comments »
Hace tiempo que este grupo viene pegando fuerte.
Somos un grupo de desarrolladores muy activos, que nos juntamos de vez en cuando, para seguir hablando de los mismos menesteres que en el grupo, y tratar de compartir un par de Cervezas y una pizzas (las pizzas no tan buenas, como las birras).
El miercoles se organizo la 4ta web & beer, con una gran convocatoria para lo que se esperaba, eramos masomenos 20 personajes, entre los cuales se encontraba el Tio, que con la webcam de sus Asus eee filmo una parte del evento en ascii a color!.
Esta son alguna de las fotos del evento.
September 5th, 2008 Category: Zend Framework
40 Comments »
Empezando con Zend Frameworks.
El otro día me encontré con una persona que se resistía a usa frameworks por el alto costo de aprendizaje que estos requerían. Si bien tiene cierto costo de aprendizaje, ese costo a mediano plazo es totalmente redituable. Esto lo digo porque varias veces he leído por ahí, gente buscando alguna librería para que maneje la conexion a la base de datos, otra para hacer un paginador, otra para el manejo del access controll list (ACL), entre otras; y lo que nos da este framework, es una solución para los problemas mas comunes, así evitamos rompernos la cabeza buscando la mejor solución, porque esto ya lo tenemos en Zend Framework. Si analizamos esto, aprender a implementar una solución, es muchisimo mas fácil que crearla, y este es el costo de aprendizaje de Zend Framework. Por esto, voy a tratar de explicar de la mejor manera como empezar a trabajar con un proyecto hecho enteramente en Zend Framework, aprovechando todos sus componentes a la medida que lo necesitemos.
1- Estructura de directorios.
Lo primero que necesitamos hacer es definir nuestra estructura básica de directorios. Nuestra estructura tiene que tener una carpeta donde podamos guardar nuestros archivos de acceso publico, como css, jpeg, avi, swf, etc. Esa carpeta en nuestro caso se va a llamar html/, la cual contendrá una carpeta css/, otra images/ y por ultimo una carpeta js/ por ahora.
Esta carpeta también contendrá nuestro bootstrap, el cual se va a encargar de llamar al modulo que corresponda, y otros menesteres.
Necesitamos una carpeta para nuestros componentes y los de Zend Framework, y para eso vamos a usar library/. Dentro de la carpeta library vamos a tener una carpeta Me/ y otra Zend/, en la primera por ahora no vamos a tener nada pero la idea es que cada componente que propio, lo colguemos en esa carpeta, Zend/ contendrá los componentes de Zend Framework.
Los módulos de nuestros sistemas van a estar compuestos de tres partes, controlador, modelo, y vista (MVC). Para esto vamos a crear una carpeta llamada apps/, en la cual vamos a tener una carpeta controllers, otra models, y otra views.
Necesitamos una carpeta para guardar todos nuestros archivos de configuracion, para seguir ejercitando nuestro lado creativo vamos a llamarla config/. Y otra carpeta para nuestros layouts, que la vamos a llamar con el mismo nombre.
A partir de lo que mencionamos anteriormente, nuestra estructura de directorios tendría que quedarnos de la siguiente manera.
Una vez definida nuestra estructura de directorio como siguiente paso vamos a incorporar los componentes de Zend Framework a nuestro proyecto. Hay varias formas de hacerlo, la que uso yo para no ocupar espacio innecesario en duplicar ZF es crear una carpeta Zend, en alguna parte de mi sistema, y a partir de ahí crear symlinks a cada proyecto, de esta forma, solo tengo una copia de ZF, y cada vez que hay alguna actualizacion de ZF solo actualizo una carpeta.
Supongamos que nosotros tenemos en /usr/local/Zend/apache2/htdocs/ nuestros proyectos, y en ese mismo lugar una carpeta Zend, con todos los componentes de Zend Framework.
Abrimos una consola y ejecutamos el siguiente comando.
$ ln -s /usr/local/Zend/apache2/htdocs/Zend/ /usr/local/Zend/apache2/htdocs/proyecto/library/Zend
2- Bootstrap.
El próximo paso es configurar nuestro bootstrap. El cual va a estar dentro de nuestra carpeta html, y vamos a llamarlo index.php.
setControllerDirectory( '../apps/controllers' );
$controller->throwExceptions( true ); //Inicialmente esta en true, cuando pasemos a produccion deberia estar en false
// DISPATCH!
$controller->dispatch();
?>
La idea es que nuestro bootstrap no sea demasiado complejo. Primero vamos a definir el path de nuestros directorios, a los cuales queremos acceder de forma facil. Mas adelante hablaremos del componente Zend_Loader, y que es el registerAutoload. Ademas le indicamos que nos muestre todos los errores, y los problemas de versiones. Y por ultimo, le decimos que ejecute el modulo que corresponda, y que lo busque en nuestra carpeta apps/controllers/
3- Configuramos el ambiente, y las reglas de Rewrite
Lo siguiente a crear son las reglas de rewrite para que se redireccione al bootstrap cada vez que se requiera algo, salvo en el caso que sea un js, css, jpeg, o cualquier extension que no sea necesario procesarla desde el bootstrap.
Nuestro archivo .htaccess tambien va a estar dentro de la carpeta html/ y tiene que tener el siguiente contenido.
RewriteEngine on
RewriteRule !\.(js|ico|gif|jpg|png|css)$ index.php
Ahora necesitamos configurar nuestro virtual host, para eso editamos el archivo httpd.conf de apache, al final de todo ingresamos el siguiente codigo
<VirtualHost *:80>
ServerAdmin admin@admin.com
DocumentRoot “/usr/local/Zend/apache2/htdocs/proyecto/html”
ServerName www.proyecto.com
ServerAlias www.proyecto.com
ErrorLog logs/proyecto-error_log
CustomLog logs/proyecto-error_log common
</VirtualHost>
Por ultimo en nuestro /etc/hosts agregamos la siguiente linea.
127.0.0.1 www.proyecto.com
4- Crear nuestro primer modulo
Una vez reiniciado el apache, en nuestro browser escribimos nuestra url de prueba. www.proyecto.com y si hicimos las cosas bien, nos aparece el siguiente error.
Los que nos dice esta excepcion, es que nos falta nuestro controller default que es index.
Para esto tenemos que crear dentro dentro de nuestra carpeta apps/controllers, un archivo con el nombre IndexController.php, el cual va a ser nuestro archivo principal.
IndexController.php
Cada vez que nosotros necesitaramos agregar un modulo por ejemplo, un modulo de usuarios, tenemos que crear un controlador para ese modulo. Cada accion que podamos ver en nuestro modulo, va a estar representado por un metodo con el nombre de la accion mas la palabra Action, de esta forma, Zend_Controller_Action identifica que es una accion valida.
En el ejemplo nosotros estamos usando Index como modulo, e index como accion, en nuestro caso, a ser la accion default no necesitamos agregar en nuestra url, el nombre del modulo, y el nombre de la accion, aunque si lo hacemos nos anda igual, por ejemplo si tipeamos www.proyecto.com/index/index/ vamos a tener el mismo resultado que www.proyecto.com o que www.proyecto.com/index/, eso es porque ZF interpreta que sino se especifica un modulo en la url, estamos hablando del modulo default (Index en nuestro caso), lo mismo con la accion.
Si nosotros queremos ver nuestro modulo de usuarios a la accion default, nuestra url seria la siguiente http://www.proyecto.com/usuarios, si queremos referirnos a la accion read, deberiamos llamarlo asi http://www.proyecto.com/usuarios/read/.
En articulos anteriores vimos un poco del patron de disenio MVC, no voy a entrar en detalles en este articulo.
El patron MVC
Zend Framework y el patron MVC
Nuestro modulo Index, tiene que mostrar algo en el browser, esto lo vamos a configurar desde nuestra vista, que en nuestro caso las vistas, las tenemos en la carpeta views/scripts/. Creamos una carpeta con el nombre del modulo, para guardar todos nuestros archivos ahi. Nos quedaria la siguiente carpeta views/scripts/index/ dentro de la cual vamos a crear un archivo, con el mismo nombre de la accion, index.phtml. La extension phtml, es la que usa como default ZF, para los archivos de la vista.
En nuestro index.phtml, vamos a generar un simple hola mundo.
index.phtml
Si todo salio bien, y ejecutamos en nuestro browser http://www.proyecto.com/
Tenemos que ver la siguiente salida
Esta es la primer entrega, donde apuntamos a la configuracion basica, mas adelante iremos aplicando mas complejidad a nuestro proyecto.









