miércoles, 16 de julio de 2008

Nuevo Dominio

http://blog.pablo-morales.com

Cambios

Es una realidad que el desarrollo web no es solo un lenguaje, y no solo una tecnologia. Nosotros trabajamos en diferentes plataformas (Win, Linux, Max), desarrollamos en varios lenguajes (php, .net, jsp, js, flex, ruby, etc). Cada lenguaje, y herramienta nos permiten crear ciertas caracteristicas que podemos usar para cierto proyecto. Por eso decir que yo solo programo en PHP no solamente nos limitamos en el mercado laboral, sino en la potencia de nuestros desarrollos. Hoy en dia estan sonando tecnologias muy fuerte a nivel web como Flex, Air, RoR, y no son herramientas que un desarrollador web tenga que despreciar. Pensar en un sistema que integre varios lenguajes no es una locura, de hecho no lo hacemos acaso?

Cuando creamos una web, minimamente usamos PHP, JS, Html, y Css. Porque no agregar Flex, o RoR.

Un ejemplo seria hacer el front end de una web con PHP5 y el backend con Flex, o RoR. No es una locura, y me parece que el resultado final puede darnos muchos reditos.

Por esto decidi cambiar la idea de Zend Hispano, por Desarrollador Web. Porque no tenemos que ser fundamentalistas de un solo lenguaje, y de absolutamente de nada, porque un viejo loco siempre decia, que todo es relativo.

Entre los cambios que van a ver en el blog contamos.

Cambio de dominio. Ahora sera http://blog.pablo-morales.com
Cambio de imagen y de herramientas. Vamos a usar wordpress, y espero que les guste este divertido themes.
Cambio de visor de PDF, ahora voy a usar Scrib que genera PDF mucho mas grandes, y claros.
Cambio de contenidos. Ahora vamos a estar mas orientado a lo web, y no solo a PHP5 y Zend.

Espero que disfruten estos cambios, y son libre de dejar cualquier opinion al respecto

domingo, 13 de julio de 2008

Desarrollando en adobe Air

¿Que es adobe air?
Este tiempo se escucho mucho hablar de AIR (Adobe Integrated Runtime). No es mas que una forma de llevar nuestras aplicaciones RIA al escritorio del usuario sin la necesidad de un navegador web, utilizando herramientas como html, javascripts o flash.

Si quieren saber mas pueden leer en la wiki

¿Que necesito para desarrollar en AIR?

Los requisitos minimos son.
Adobe air runtime
Adobe air SDK
y un IDE

Instalacion.

Despues de bajar el SDK e instalar el Runtime de Air, seguimos con la configuracion basica.

El SDK tiene 3 carpetas fundamentales lib, bin, y runtime.
Estas 3 carpetas estan incluidas dentro del sdk.

Lo proximo que necesitamos hacer es agregar al path del sistema la ruta donde tengamos la carpeta bin para poder ejecutar desde cualquier lugar del sistema las aplicaciones air.


Nuestra primer aplicacion

Ahora vamos a crear el primer hello world.

Una aplicacion de Air consta de dos archivos basicos. Un html o swf que va a ser el que tenga todo el contenido, y un xml que va a contener toda la informacion que necesita adobe air para ejecutarse.

Vamos a crear una carpeta en cualquier parte del sistema donde nosotros queramos desarrollar nuestras aplicaciones adobe air.

y vamos a crear dos archivos.

AIRHelloWorld.xml
AIRHelloWorld.html

El primero como dijimos antes contiene toda la informacion que necesita air para procesar el archivo, y el segundo contiene la informacion a mostrar.


AIRHelloWorld.xml













Creo que el significado de las etiquetas se entiende pero voy a explicar algunas.

ID: este es el identificador unico para nuestras aplicaciones adobe air.
FILENAME: El nombre que recibe el archivo cuando la aplicacion ha sido creada
NAME: El nombre que le vamos a asignar a nuestra aplicacion
DESCRIPTION: Una descripcion de nuestra aplicacion
VERSION: Version de la aplicacion

INITIALWINDOWS: aca se encuentran los tags necesarios para que adobe air ejecute la aplicacion.

Pueden ir probando las diferentes opciones a configurar de estos tags, el mas importante es el content que debe tener si o si, el nombre del archivo que tiene el contenido de la aplicacion.

Y por ultimo vamos a ver el codigo de nuestro archvio .html













Aca no tenemos muchas mas novedades que la funcion init que se ejecuta al cargarse la pagina.
Esta funcion es un codigo especifico para que pueda ser interpretado por el runtime de air.

Despues de crear estos dos archivos vamos a ejecutar nuestra aplicacion de esta manera.

Desde la linea de comandos, ejecutamos el siguiente codigo.

adl AIRHelloWorld.xml


Y nos tiene que mostrar la siguiente ventana.




















Facil, no?




La fuente de este documento esta a continuacion en ingles.



viernes, 4 de julio de 2008

El modelo de Drupal

El otro día estaba leyendo un post en un blog de un personaje conocido en el mundo de PHP, criticando a un framework, y me llamo la atención los puntos que marco como deficientes.

Que seria lo correcto o incorrecto ?

La realidad indica que lo funcional es lo correcto, pero es tan asi?

Nosotros sabemos que al mundo lo rigen ciertas reglas, de cosas que deberían ser, y realmente en PHP se hace lo que se quiere sin respetar estas reglas, y es muy difícil destacarse en este ambiente, tan mal visto por verdaderos gurus de la programacion. Al manejar muchos pseudo lenguajes (js, html, css, xml, json, etc), se complica un poco la organizacion, y si además a eso le agregamos que PHP es un hibrido que permite estructurado y POO. Y que hasta estos días no se conoce un estándar de código, mas allá de lo que tenemos en la documentacion de Zend, y que no somos muchos los que lo implementamos. Esto se traduce ha mucho código programado y pensado en muchas variedades diferentes.

Hace unos días empecé a trabajar con Drupal, para el frontend de un portal, y su código podría ser catalogado como incorrecto, pero la funcionalidad y la potencia de este CMS, lo hacen único. Su flexibilidad, su extensionalidad, y lo fácil que resulta lo hacen un gran CMS, sino el mejor. Pero la mayoría de su código son funciones, ni siquiera PHP4 solo funciones, bien estructurado, muchas de esas funciones nos devuelven HTML puro, así es HTML en una función, y generamos las distintas partes de un themes a través de esto.

Y para seguir hablando de lo poco correcto del código, tengo que decirles otra cosa mas (lo que va a leer ahora puede ser nocivo para la salud), usa variables globales!.

Sin embargo Drupal es el CMS mas popular, eficiente, fácil, y extensible del mercado.

Así y todo yo apoyo 100% el uso POO en PHP, creo que PHP5 es uno de los grandes avances que tuvimos, y es la forma en que la gente de Zend nos dice, "Estamos evolucionando, sigan con nosotros", no solo PHP5, sino los magníficos Frameworks que tenemos hoy en el mercado como symfony y Zend Framework, entre otros, que día a día siguen extendiendo funcionalidades, de la mejor forma posible usando POO.

Posibles soluciones: que en las próximas versiones la gente de Zend, elimine la programacion estructurada de su código, y obliga al mejor ejemplo java a usar solo POO, pero esto tiene mas de una contra, va a perder popularidad, el costo de aprendizaje va a ser mayor. Pero vamos a ser mas respetados como programador, los que sigamos con PHP, vamos a tener un camino definido bajo estándares de código, y siguiendo una linea. Sin embargo no creo que sea lo mejor.

En definitiva, creo que lo mejor es que tomemos el tren que mejor nos quede.

Ustedes que piensan?

Enlaces:
Drupal
Zend Framework
Symfony
Estandar de código

martes, 1 de julio de 2008

Paradigmas de Programación: Orientación a Objetos

Orientación a Objetos v1.0

Como vimos antes, los paradigmas son lineas de pensamiento que nos dan herramientas y abstracciones / formas de asbtraccion para poder plantear / estudiar / resolver un problema de cierto tipo en cierto entorno.
De los paradigmas imperativos, el paradigma de objetos es un de los mas conocidos: el mas hablado y el menos usado. Esto se debe, a mi juicio, a la falta de conocimiento del paradigma de objetos: es muy facil programar en java, lo complicado es programar pensando en objetos.

En el caso de la orientación a objetos (OO en adelante), el paradigma nos ofrece dos elementos sobre los que se basan todos los cimientos: Objetos y mensajes.

La nocion de programa en OO es un ambiente en el que conviven objetos, con responsabilidades conocidas y definidas que representan entes de la realidad y se relacionan y comunican entre ellos a travez de mensajes para lograr la solución a traves del trabajo cooperativo.

Asi entonces se puede decir que cada objeto tiene un comportamiento y un estado asociado y se espera que responda y trabaje en equipo con los demas.

La forma de enfocar la resolución de problemas con este paradigmas entonces es tan sencilla y tan complicada como la concepcion de objetos que representen distintos entes y conceptos reales y la adjudicación de reponsabilidades, lo que termina determinando la forma de interrelación entre los objetos.

Una vez modelada la solucion en función de los objetos protagonistas, se pasa a pensar en las clases o en los prototipos de los objetos.

Algunas de las caracteristicas principales del paradigma orientado a objetos son:

    • Objetos

Abstracciones computacionales de entes reales

    • Mensajes

Pedidos que le puedo hacer a un objeto para poder
interactuar con el

    • Polimorfismo

Permitir que dos objetos puedan ser tratados
de la misma manera por un tercero.

    • Herencia

Capacidad de definir objetos extendiendo el
comportamiento de objetos existentes, algo asi como una
evolución natural.

    • Encapsulamiento

Un objeto solo conoce su implementación y no conoce
la implementación de los demas, solo necesita saber
de los demas los mensajes que les puede enviar.

Mas adelante vamos a adentrarnos en estas y otras caracteristicas e ir macheandolas
con ejemplos en distintos lenguajes.

Algunas analogías normales a la forma de pensamiento sistematica modularizada del paradigma OO pueden ser:

Cuerpo Humano:
En el cuerpo humano cada organo hace su trabajo, y comunican necesidades a traves de encimas y otros químicos, trabajando en equipo
y haciendo que el cuerpo funcione.

Empresa:
Una empresa tiene departamentos, conformados por personas con responsabilidades. A su vez, existen canales formales para comunicar
las necesidades y dar a conocer estados.

Algunos lenguajes que dan soporte a orientación a objetos de manera nativa son:

Smalltalk
C++
Objective-C
Python
PHP
Java
Ruby
C#
ASP
Action Script
Java Script
Perl
Delphi
ABAP