September 12th, 2011 Category: Curso php5 Programacion Zend Framework
23 Comments »

Llego la hora de hacer algo util, hoy vamos a ver como configurar nuestra aplicacion para trabajar con una base de datos mysql, para eso vamos a usar Zend_Form para crear formularios y vamos a crear modelos para poder traer datos de nuestras tablas y poder escribir en ellas.

Si te perdiste el video anterior podes verlo aca

Es recomendable ver el video en 720p de resolucion y en pantalla completa.

Los que quieran descargarse el codigo fuente pueden hacerlo desde github en http://github.com/pablofmorales/News123

Capitulos Anteriores
Capitulo 1 < Configuracion y creacion del proyecto
Capitulo 2 < Estructura de directorios, MVC y layouts
Capitulo 3 < Objeto view, y contenido estatico

Proximo capitulo > Edicion, y Paginado.

Gracias Maestrosdelweb por darme un espacio en su cuenta de youtube

Seguir leyendo

August 31st, 2011 Category: php5 Programacion Zend Framework
No Comments »

Muchas veces necesitamos guardar una fecha en mysql, y recibimos una fecha con el formato dd/mm/yyyy, pero en Mysql es necesario guardarlo con el formato yyyy-mm-dd.

Esto no supone ningun inconveniente con Zend Framework, la verdad es que es bastante simple.

Lo primero que hacemos es recibir la fecha como viene, y crear una instancia de Zend_Date

$fechaInicial = "25/08/2016";

$fecha = new Zend_Date($fechaInicial, 'dd/mm/yyyy');

echo $fecha->get('yyyy-mm-dd');

Con el metodo get y pasando como parametro, el formato que necesitamos es todo lo que necesitamos para guardar ese valor con un formato de fecha valido en nuestra base de datos.

Seguir leyendo

August 31st, 2011 Category: php5 Programacion
No Comments »

Hasta ahora no necesite implementar funciones anonimas en ningun proyecto, pero estaba trabajando con archivos de texto, donde tenia que parsear el contenido y me encontre que el array que generaba con cada columna de una linea de archivo, venia con espacios al inicio y me complicaba las validaciones, asi que tenia que usar la funcion trim(), en cada elemento. Para hacerlo facil queria usar array_walk(), el problema es que no podia usar trim(), como nombre de funcion.

Asi que decidi usar closures, condenando el proyecto a solo correr en php 5.3, pero eso no iba a ser un problema (creo).

Para lo que no sepan lo que es un clousure, pueden leerlo en la pagina de PHP

El codigo es bastante simple y lo comparto a continuacion.

array_walk($prop, function(&$n) {
	$n = trim($n);
});

Como ven en el ejemplo la forma de implementarlo es realmente muy simple, tal como lo hacemos en javascripts.

Es importante que no abusen de estas funciones anonimas, porque pueden traer confusion cuando el sistema crezca un poco, pero es interesante aplicarlo en estos casos que son bastante simples, y necesarios.

Soy conciente de que tendria que tener listo el capitulo 4 del curso de Zend Framework, en un rato lo subo, a no desesperarce. :D

Seguir leyendo

August 15th, 2011 Category: Curso php5 Programacion Zend Zend Framework
16 Comments »

En este capitulo vemos como pasar datos desde un controller hacia la vista, o el layout. Tambien agregamos archivos estaticos al proyecto, css, js, e imagenes.

Si te perdiste el video anterior podes verlo aca

Es recomendable ver el video en 720p/1080p de resolucion y en pantalla completa.


Los que quieran descargarse el codigo fuente pueden hacerlo desde github en http://github.com/pablofmorales/News123

Capitulo 1 < Configuracion y creacion del proyecto
Capitulo 2 < Estructura de directorios, MVC y layouts

Proximo capitulo > Base de datos y Modelos

Seguir leyendo

July 27th, 2011 Category: Curso php5 Programacion Zend Zend Framework
28 Comments »

Ya esta el capitulo dos del video tutorial de Zend Framework, en esta edicion vamos a dar un repaso sobre la estructura de direcotrios de Zend Framework, editar los controllers, las vistas, y el layout de nuestra aplicacion.

Tambien vamos a empezar a darle forma a nuestro proyecto. Y entender la diferencia entre el contenido estatico y el contenido generado por nuestro MVC.

Espero que lo disfruten, pueden usar los comments de este blog para plantear dudas, pedir que se refuerce algun tema, o pedir temas a tocar en el futuro.

Si te perdiste el video anterior podes verlo aca

Es recomendable ver el video en 720p de resolucion y en pantalla completa.


Los que quieran descargarse el codigo fuente pueden hacerlo desde github en http://github.com/pablofmorales/News123

Capitulo Anterior < Configuracion y creacion del proyecto

Proximo capitulo > Enviar parametros a las vistas y agregar archivos js y css a nuestro proyecto.

Seguir leyendo

July 18th, 2011 Category: Curso php5 Programacion Zend Framework
26 Comments »

Este es el primero de una serie de screencast donde la idea es mostrar como crear un proyecto con Zend Framework.

Vamos a crear un portal de noticias que llamaremos “news123″ a medida que pasen las clases vamos a darle forma al proyecto.

En el primer capitulo vamos a configurar nuestro proyecto desde 0. Esto incluye el startup del proyecto y la configuracion en netbeans, y en Apapche para que corra dentro de un virtualhost dentro de un servidor local.

Recomiendo ver el video en pantalla completa y en la resolucion 720p para poder ver con claridad el tutorial.

Los que quieran descargarse el codigo fuente pueden hacerlo desde github en http://github.com/pablofmorales/News123

Proximo capitulo >

Seguir leyendo

May 20th, 2011 Category: php5 Programacion
6 Comments »

Y si gente si yo pude cualquier mortal puede. La verdad es que no fue nada dificil, lei el libro una vez, y despues repase algunos capitulos la noche anterior, y salio bastante bien.

Creo que las partes mas importantes para repasar y que por ahi no se usa mucho es el trabajo con socket, y XML, ya que le da mucha relevancia al trabajo con DOM.

Lo unico malo que me paso es que la licencia la compre hace unos 11 meses atras, y cuando fui a rendir en vez de tomarme la version 5.2 me tomaron la 5.3, y no hubo problema con las LAMDA ni con Namespaces, el problema vino con las SPL, ya que en la version anterior solo tenia algunas SPL, ahora habia un monton, y me preguntaron justo la que nunca habia usado :( .

Pero quiero animarlos a todos para que intenten sacar la certificacion, en Argentina solo somos 19 los certificados y no estaria mal que ese numero aumentara un poco.

En Argentina el examen se puede rendir en muchos lugares, yo elegi Educacion It por ser ex profesor del instituto, pero hay muchos lugares para elegir.

Aca les dejo mi link

Seguir leyendo

January 11th, 2011 Category: Open source
4 Comments »

Por casualidad hoy volvi a visitar el blog de Sebastian Bergmann, un groso dentro del ambiente de PHP. Sin dudas el proyecto mas importante que realizo fue PHP Unit el cual esta tomando cada vez mas repercusion dentro de los desarrollos actuales.

Uno de los grupos de desarrolladores mas importantes en la web que usa PHP Unit es Facebook. Y a traves de un mail le agradecen  a Sebastian Bergamann de la siguiente forma

“Hey Sebastian,

we would really like to thank you for all the work you’ve done on PHPUnit this year. Testing is important when we’re talking about 500 million people; a bug for 1% of Facebook users is still affecting 5 million people!

To show our appreciation we’d like to give you a free year of a GitHub paid account. The link below provides one year of more space, more collaborators, and private repositories. If you already have a paid GitHub account, it will add a bunch of credit instead.”

Mas alla que para Facebook una cuenta por un año en github no significa nada, si tenemos en cuenta los millones de dolares que recibe de inversion, tambien es verdad que no hacia falta quedar bien con Sebastian porque el lo hace sin animo de lucro,  sin embargo el grupo de desarrolladores de Facebook consiguieron retribuirle a Sebastian su trabajo, de una manera muy interesante.

Lo mas importante de esto fue el comentario de Sebastian sobre este mail.

“Thank you, Facebook!

It feels good to be appreciated for the work I do to make the life of PHP developers better by working on development and quality assurance tools such as PHPUnit.”

Creo que esto simboliza el esfuerzo que cada uno hace por el open source. No hablamos de plata, de dolares ni de cuentas gratis por servicios online, sino la satisfaccion personal de saber que lo que hacemos le sirve a otras personas.

Cuando compartimos nuestro trabajo estamos facilitando las cosas a muchas personas. En este caso una de las herramientas mas utiles a la hora de desarrollar una aplicacion, y asegurarnos de que todo anda bien.

Pagina de Sebastian

Seguir leyendo

October 4th, 2010 Category: Programacion
11 Comments »

Cada vez es hay mayor cantidad de herramientas y tecnicas para realizar sistemas web, esto le da muchas mas complejidad dia a dia al desarrollo web, pero tambien mucha herramientas que facilitan el desarrollo de un sistema web.

Antes con saber programar en PHP/Mysql/Html/Css era mas que suficiente para conseguir clientes, y poder trabajar en cualquier proyecto web. Hoy en dia esto no es suficiente.

Los sistemas al ser mas complejos, requieren mas profesionalismo en el desarrollo, y gente mas capacitada. Hay muchas herramientas que hoy son indispensable para proyectos medianos/grandes, que requieren mas de un programador.

Control de versiones.

Es real que los sistemas son cada vez mas grandes y mas robustos, generalmente vemos que un sistema tiene varios desarrolladores, disenadores, QA, y otros, solo para crear un sitio de e-commerce, o un portal mediano. Esto hace indispensable el uso de un sistema para el control de versiones, pero no solo alcanza con saber hacer un checkout y commit con svn, ahora se necesita un conocimiento general sobre la teoria del control de versiones, branch, tags, mergear ramas. Tambien manejo de otros sistemas de control de versiones como mi actual favorito Git, o mercury, entre otros.

Testing Unitarios.

El trabajo en grupo es algo de todos los dias, siempre nos acomplamos a un grupo de desarrolladores, son muy pocos los proyectos que hacemos solo para que los desarrolle una sola persoa, esto si bien acelera los tiempos de desarrollo, tambien puede generar conflictos con el codigo de otras personas, puede pasar que alguien suba algo y rompa todas las funcionalidades del resto de los desarrolladores. Esto es tan normal que ya tenemos asumido que puede pasar en cualquier momento. Pero tenemos los unit testing, que hacen que estas cosas se puedan prevenir. Antes de hacer un commit, corremos todos los testing unitarios, y podemos saber si rompimos algo, antes de subir nuestro codigo al repositorio global. Igual, lo ideal es que cada developer trabaje en su branch, y que alguien o un script, mergee los branch al trunk cuando haya pasado todos los testing, y se considere que puede pasar al trunk (rama principal). Hay sistemas open source como crouisecontrol, que mantienen informado a todo el equipo como salieron los unit testing despues de que alguien del equipo subiera sus cambios. Si alguien subio y rompio algun unit testing, este le envia un mail a todo el equipo avisando del problema, para que lo solucionen rapido, ademas podemos hacer que sino pasa los testing, revote los cambios.

SEO

El SEO es un tema importante hoy en dia, no necesitamos ser “expertos” en SEO, pero necesitamos entender que es y cuales son las buenas practicas que podemos aplicar en nuestros desarrollos para facilitar la indexacion de parte de los motores de busqueda. Url amistosas, xhtml estricto y semantico, jerarquizacion de nuestro contenido utilizando correctamente los tags html, edicion de metatags, etc.

Servidores

Este siempre fue un tema que todo desarrollador esquivo, para delegar la responsabilidades al sys admin correspondiente. Es increible la cantidad de desarrolladores que se consideran senior, y no saben configurar un Virtual Host en apache, o usar minimamente la consola de linux. Linux/Unix nos brinda un monton de herramientas para los desarrolladores increbiles, que nos pueden hacer la vida mucho mas facil, y no lo digo solo por los comandos mas usados como tail, cat, vim y grep, tambien tenemos muchas otras herramientas que aumentarian considerablemente la velocidad y calidad de nuestros trabajos.


Uso de Frameworks.

Coincidas o no con la filosofia de usar uno u otro framework, te guste ZF y detestes Cake, o no te guste ninguno, la realidad es que tenes que tener la capacidad de poder manejar cualquiera de estos. Obviamente no estoy diciendo de manejarlos en profundiad sino manejar sus conceptos basicos, como configuracion, como maneja el modelo de datos, las vistas, etc. La mayoria de frameworks en PHP usan el Patron de diseno MVC. Conocer como funciona MVC es vital hoy en dia, pero tambien lo es entender los conceptos de ORM, Smarty (sistemas de plantilla), y tantos otros “Frameworks” / Libreria que complementan el desarrollo de una aplicacion.


Aplicaciones Pre Armadas.

Antes teniamos PHP-Nuke y gracias, en la actualidad que un cliente te presente la posibilidad de usar Joomla, Drupal, o Magento, es algo casi de todos los dias, nosotros como developers, tenemos que conocer no solo las ventajas de cada sistema de este tipo, sino tambien estar preparado para utilizarlo en el caso de que creamos que es necesario. Drupal para desarrollar webs es una herramienta increiblemente facil, ahorramos muchisimo tiempo de desarrollo configuracion, etc, etc. Lo mejor de estas aplicaciones es que es muy facil integrarlas a otros sistemas como Wikimedia, wordpress, u otros sistemas similares, o propios. Crear un modulo o plugin tambien es muy simple y  las comunidades brindan una ayuda que vamos a poder valorar muchisimo cuando las necesitemos.


Social Media.

Muy lejos estoy de aceptar este rubro como algo importante, pero cuando yo me refiero a social media, lo hago desde el lado de desarrollo, orientando la aplicacion para que tenga las funcionalidades para integrarse con las redes sociales mas importantes. Un ejemplo excelente para mi gusto es stackoverflow, intenta registrarte y loguearte, son geniales. Esta claro que un usuario web comun y corriente hoy en dia tiene alguna cuenta o en gmail, facebook, wordpress, twitter, entre otros, porque no usar las api de esas redes sociales para facilitar el registro y login de usuarios en nuestros sistemas?

Compartir el contenido de nuestros sitios, con herramientas tan facil de usar como el “Me gusta” de facebook, o twittear un contenido, son muy utilies no solo para que nuestros usuarios puedan compartir sus intereses dentro de sus circulos “sociales”, sino tambien para que podamos conseguir usarios nuevos por este medio.

Herramientas para el desarrollo

No quiero volver a empezar la discusion de Vim o Eclipse, esto es algo que sobrepasa cualquier discusion, hoy en dia necesitamos todas las herramientas que aumenten nuestra productividad y el mejor manejo para el trabajo en equipo. El IDE hoy en dia es esencial, no quieras desarrollar algo en Vim, porque si estas trabajando por hora, vas a generar perdidas a la empresas en un monton de aspectos, que la verdad esos problemas no lo vas a tener con el correcto uso de un IDE, Eclipse PDT / Netbeans, son herramientas geniales para cualquier developer. Pero tambien estas herramientas no son las unicas. Necesitamos algo con el que puedas ver tus tareas asignadas, estado de las mismas, y porque no las de tus otros companeros de equipos. Un tracker como Trac, o Pivotal Tracker, yo estoy usando este ultimo y la verdad es que es bastante complejo pero muy util una vez que le hagarraste la mano. Necesitas trackear tus horas para aumentar la productividad?, usa Toggl, es un servicio web publico con una version gratuita muy flexible. Con una herramienta para instalar que tiene su version en windows, mac , y linux :) .

Conclusion
Pareciera que estoy dejando de lado los temas importantes que son conocimientos del lenguaje del lado del servir, motor de base de datos, javascripts, frameworks en JS, Css, xhtml, html5. Todos estos son conocimientos que ya deberiamos tener en claro, sinos consideramos experimentados.

Trabajando en entornos Norte americanos, las exigencias son aun mayores. Estos exigen un nivel, que es muy dificil encontrar en latino america. Pero podemos adaptarnos, tenemos la capacidad, y ellos tienen que entender que somos la mejor opcion.  Lo mismo para el mercado europeo.

Espero que entiendan que mi idea no es hablar como absolutista, mas bien compartir la experiencia de haber estado tanto tiempo en el desarrollo web.

Seguir leyendo

June 16th, 2010 Category: linux php5
No Comments »

Una de las novedades con Ubuntu Lucid es que venia con PHP 5.3, para mi iba todo muy bien, hasta que empeze a trabajar con Magento enterprise edition, el cual requiere la libreria ioncube (http://www.ioncube.com/). Lo primero que hice fue tratar de instalar en la libreria en mi php 5.3, despues de buscar un poco me encontre con el primer problema, Ioncube aun no tiene soporte para php 5.3.

Como si o si necesitaba instalar esta libreria busque la forma de pasar a PHP 5.2, lamentablemente no estan facil como se supone que deberia ser. Lo mas llamativo es que no existe dentro del repo de Lucid la version 5.2.x, solo nos deja instalar php 5.3, esto me resulto raro ya que esta version todavia no esta demasiado fomentada en los servidores web. Me paso en otras distro que con algun problema con por ejemplo mysql, donde la version default de mysql era mysql-server-5.1 en el repo igual contaba con la version mysql-server-5.0.

Para instalar PHP 5.2 en Lucid, hay que borrar todo lo relacionado a PHP 5.3 en nuestro sistema, y despues cambiar los repos para que busque en el de Karmic que es la version anterior, y si tiene php 5.2 en los repos.

Segui paso a paso esta post para tener php5.2 en Lucid

http://mrkandy.wordpress.com/2010/04/16/install-php-5-2-x-in-ubuntu-10-04-lucid/

El problema es que hay que acordarse que cada vez que queramos instalar algo relacionado con PHP hay que hacerlo asi.

$ sudo aptitude install -t karmic nombrPaquete

Es molesto pero por ahora la unica solucion.

Despues de hacer esto, instale el ioncube, y todo perfecto.

Instale las librerias gd, mysql, curl.

Cuando quise instalar mcrypt, otra libreria muy necesaria, empezo mi segundo problema y el mas molesto. Por alguna razon, esto es probable que yo haya hecho algo mal, cuando queria instalar mcrypt, el apt-get me daba una advertencia, diciendo que para instalar el paquete tenia que hacer un upgrade a la version 5.3, ninguna de las opciones de instalacion me permitian mantenerme en 5.2.

Un companero de proyecto, Gonzalo, me recomendo bajarme la lib de 64 bit desde el repo de debian http://packages.debian.org/lenny/php5-mcrypt, podria haber usado

#dpkg -i paquete –force all, pero esto podria traer problemas con mi distro, asi que descomprimi el .deb, e instale la lib a mano. Copiando el .so en /usr/lib/php5/2006…/ y creando el mcrypt.ini en /etc/php5/conf.d

Cuando reinicie el apache encontre mi tercer y ultimo problema. Mcrypt tiene una dependencia, que es libltdl, busque en aptitude y lo que habia ya estaba instalado, y como ya habia pasado un rato en esto, hice la facil, me baje desde debian lenny la libreria http://packages.debian.org/lenny/libltdl3 y la instale con dpkg.

Ahora anda todo perfecto. Ubuntu Lucid con Php 5.2 con Ioncube corriendo a la perfeccion Magento Enterprise. :D

Seguir leyendo