Comenzando con YII Framework

Hace un tiempo trabajé con Cake PHP, y mientras lo utilizaba pensaba que estaba muy bien para medianas/grandes aplicaciones pero me preguntaba por qué no habría algún framework MVC más enfocado en el desarrollo de websites, que provea desde el inicio validación, login, un scaffolding agradable, búsqedas,etc.

Hoy me puse a investigar un poco acerca de YII Framework, y aparentemente es el framework que más se acerca a eso que estaba buscando.

Al igual que Cake y Symphony, YII está basado en Rails, lo cual es muy bueno. No voy a ponerme aquí a describir las virtudes de Rails, pero digamos que tiene una estructura de archivos similar, es MVC, y tiene una consola que nos facilita la creación de los ABMs para los modelos, entre otras cosas.

Instalación

Primero debemos descargar la última versión estable desde el
sitio oficial
. En este momento la última versión estable es la 1.1.8.

Descomprimimos el zip en nuestro localhost. Esto nos creará la carpeta en donde quedará instalado YII. Para crear nuestra primera aplicación debemos abrir la línea de comandos de windows (INICIO-> EJECUTAR-> cmd) e ingresar al directorio en donde instalamos yii y luego a la carpeta “framework”.

1
c:\ cd diretorio_de_yii\framework

Una vez allí vamos a crear nuestra primera aplicación utilizando la consola de YII. En este caso llamaremos a la aplicación miWebsite, para generar todos los archivos necesarios para nuestra nueva aplicación, y suponiendo que nuestro localhost está en c:\wamp\www tipeamos:

1
yiic webapp c:\wamp\www\miWebsite

Automáticamente creará la estructura de nuestra nueva aplicación en el directorio que le indicamos. Si accedemos al sitio desde nuestro navegador ya podemos ver la pantalla de bienvenida, y aquí es en donde noté la diferencia con los otros frameworks. Desde el inicio nos crea una estructura básica de un sitio web, podemos ver un menú con home, una página estática de muestra, un formulario de contacto y un login… estos últimos con la validación correspondiente y un captcha en el formulario de contacto!

Configurando la base de datos

Para configurar la base de datos debemos editar el archivo main.php que se encuentra en miWebsite\protected\config
Por default viene configurado para sqlite, pero si queremos utilizar MySQL, debemos reemplazar el connectionString para que quede de la siguiente manera.

1
2
3
'db'=>array(
  'connectionString' => 'mysql:host=localhost;dbname=socialdating','username'=>'root', 'password'=>'', 'charset'=>'utf8',
)

Creando las clases

Las clases pueden ser creadas automáticamente desde la consola, pero previamente debemos crear la tabla correspondiente en la base de datos. Supongamos que creamos la tabla “users”. Para generar la clase correspondiente debemos acceder nuevamente a la consola, pero esta vez lo haremos desde directorio de nuestra aplicación, accediendo a miWebsite\protected

Allí accederemos a la consola, indicándole la ruta al archivo de configuración main.php en donde está la conexión a la base de datos, ya que allí está la info que necesita para crear la clase con los campos indicados en la base de datos.

1
yiic shell config/main.php

Una vez que accedimos a la consola, para crear la clase tipeamos lo siguente:

1
>> model user

Se crearán tres archivos: models/Users.php, fixtures/User.php, unit/UserTest
Por ahora el único que nos interesa es Users.php, los otros dos archivos tienen que ver con que YII está pensado para soportar TDD, y los utilizaremos para hacer testing.

Si deseamos crear el ABM para esa clase automáticamente (scaffolding), el comando correspondiente es:

1
>> crud User

Nos generará varios archivos y nos indicará que podemos ver el ABM correspondiente a la clase User en la siguiente dirección: miWebsite/index.php?r=user

Como se ve en la captura, otra de las cosas que lo diferencian de otros frameworks que conozco, es que automáticamente se crearon las validaciones correspondientes.

Estas validaciones, además, pueden ser localizadas según el lenguaje deseado símplemente agregando al array de configuración de main.php el elemento ‘language’=>’es’.

Sobre la creación de las clases hay que decir que también ofrece un generador de código automático llamado GII, esta herramienta corre sobre el navegador y nos permite crear las clases de una manera más visual, pero me pareció mas rápido para este propósito hacerlo por consola, más adelante probaré la herramienta.

Bueno, eso es todo lo que he visto por ahora, pero lo poco que he visto me ha parecido genial. Voy a seguir investigando este framework ya que tiene muchas mas características que me resultan sumamente atractivas y realmente me gustaría aplicarlo en algún próximo proyecto.

Agregar botón “me gusta” de facebook a nuestras webs

Hace unos dias asistí a Mar del Plata developers conference 2011, un evento desarrollado en el Sheraton de la ciudad de Mar del Plata para desarrolladores y emprendedores IT. Hubo muchas charlas más que interesantes, entre ellas la dictada por Matías Paterlini acerca de las Social apps y la importancia de desarrollar para ellas.

Lo que queda claro es que el nivel de viralidad que se puede alcanzar agregando redes sociales a nuestras aplicaciones web no es poca cosa. Realmente el uso de Facebook (por citar la más importante) nos permite llegar a una cantidad de usuarios que, sin redes sociales de por medio, jamás llegarían a nuestro sitio.

Una buena forma, y sencilla, de implementar esto es el botón “me gusta”. Una persona en facebook que dice que “Le gusta” determinado link lo está compartiendo con todos sus contactos, tal vez cientos, de los cuales algunos por simple curiosidad o real interés ingresarán a ese link, y si a ellos también “les gusta” la rueda comenzará a girar nuevamente… y así.

Agregar el botón me gusta a uno de nuestros sitios es una tarea muy sencilla. Primero hay que ingresar a http://developers.facebook.com/docs/reference/plugins/like/ Ahí se encuentra un simple generador de código, el cual podemos completar a nuestro gusto y luego pegar el resultado en la aplicación que estamos desarrollando.

El código que nos genera es el siguiente:

1
2
3
4
5
6
<div id="fb-root">
</div>
<script src="http://connect.facebook.net/en_US/all.js#appId=192637090803724&amp;xfbml=1">
</script>
<fb:like href="www.hernan-galvan.com.ar" send="true" width="450" show_faces="true" action="like" font="">
</fb:like>

Si queremos que salga en castellano tenemos que reemplazar “en_US” por “es_ES” y listo; y jugando un poco con los distintos valores podemos hacer que la apariencia del botón sea diferente.

La imágen siguiente corresponde al sitio desarrollado recientemente Vendedores pro

 

 

 

 

Hay muchas cosas más complejas e interesantes para realizar con la app de facebook y lograr que nuestras webs sean mucho mas 2.0, para saber más es recomendable darse una vuelta por facebook.developers.com.

Gmail man

Hace algunas horas microsoft lanzó un video bastante agresivo en contra de gmail para promocionar su nuevo producto Office 365. El video comienza diciendo que “lo que van a ver es todo lo que office 365 no es” y continúa con un clip bastante gracioso, muy al estilo ‘the office’, en el cual un simpático cartero revisa el correo de todos para ofrecerles propaganda basada en las palabras encontradas en el mismo. Mas o menos lo que gmail hace, con la diferencia de que quien lo hace no es una persona sino un bot.

Personalmente el video me parece muy bueno, y es una muestra mas de cómo funciona el tán de moda márketing viral. Eso si, ni me mueve un pelo a la hora de decidir seguir utilizando gmail, por ahora muy superior en mi opinión, al correo de microsoft, y la propaganda realmente ni la miro. De todas formas vale darle una oportunidad a Office 360, veremos qué sucede.

Obtener datos en Json con Propel

Obtener datos en Propel puede hacerse de forma sencilla y con muy pocas líneas de código. Si necesitamos los datos en Json, primero debemos convertir los datos recibidos en un array, y luego pasarlos a Json.

1
2
3
4
5
6
7
8
//Obtengo los datos
$cosa=$cosaQuery::Create()->findPK($cosaId);

//Transformo la salida en un array asociativo
$arrayCosa=$cosa->toArray();

//Paso el array a Json
$JsonCosa=json_encode($arrayCosa);

Primer entrada

Finalmente terminé de implementar este blog/portfolio gracias al genial tema BlueBubble para wordpress. Estaba buscando un template que sirviera como presentación de mis trabajos y después de mucho buscar creo haber encontrado el indicado.

¿Qué van a encontrar en esta web? bueno, principalmente mis trabajos, información sobre mí y mis proyectos actuales, y en el blog la idea es tener un lugar en donde pueda plasmar mis pequeños aprendizajes del día a día para luego utilizar como sitio de consulta, y si le sirve a otros, mejor aún. También me interesa intercambiar puntos de vista, recibir correcciones, consejos y aprender de ellos.

Si quieren descargar el theme BlueBubble pueden hacerlo desde la página del autor Thomas Veit.

Saludos!