Asier Marqués

Hablando sobre tecnologías web y otras cosas que me interesan

Archivo de la categoría 'Frameworks'...

Archivado bajo Bases de Datos, Desarrollo Web, Frameworks, Microsoft, PHP, Sistemas, Trucos

En la actual versión de symfony se usa Propel junto a Creole para crear un orm y una capa de abstracción entre la base de datos y el resto de nuestra aplicación.

Esto nos permite desarrollar aplicaciones independientes del motor de base de datos que usemos.

Php utiliza oficialmente la librería mssql para conectarse a una base de datos Sql Server y aunque existe una opción mejor por parte de Microsoft en fase CTP, Propel (y por lo tanto Symfony) la utilizan para conectarse a este tipo de motor.

Sin embargo, para conseguir conectarse y operar con éxito con Sql Server 2005 hay que hacer una serie de configuraciones en php/symfony y hacks en creole.
(Espero que no os siente esto como un cubata de Baileys con tonica : )

Vamos a verlo paso por paso:

1- Actualizar la librería ntwdblib.dll a la versión 2000.80.194.0.

2- Activar las extensiones php_mssql y php_xsl en el php.ini.

Adicionalmente debemos indicar los siguientes parámetros para php_mssql:

mssql.datetimeconvert = 0
mssql.textlimit = 2147483647
mssql.textsize = 2147483647

3- Crear nuestra base de datos en Sql Server y asignar el login y permisos adecuados al usuario que usemos para conectarnos.

4- Editar el archivo schema.yml con nuestro esquema de base de datos.

5- Configurar la conexión a la base de datos:

[ruta_completa]\symfony.bat configure:database
“mssql://usuario:password@equipo\instancia/nombre_baseDatos”

6- Construir el modelo orm de symfony:

[ruta_completa]\symfony.bat propel:build_model

7- Editar el fichero MSSQLConnection.php ubicado en \lib\plugins\sfPropelPlugin\lib\vendor\creole\drivers\mssql dentro del directorio de symfony.

En el caso de que no se especifique un puerto en el string de conexión a la base de datos, creole te inserta el valor de puerto predeterminado para sql server. Sin embargo, en Sql Server 2005 esto provoca un fallo impidiendo realizar una conexión exitosa a la base de datos.

Para evitar que creole nos meta el puerto si o si, debemos modificar la siguiente secuencia de control en MSSQLConnection.php:

if(!empty($dsninfo['port'])) {
$dbhost .= $portDelimiter.$dsninfo['port'];

}

//*else {
//$dbhost .= $portDelimiter.’1433′;
// }

Con estas modificaciones ya deberíamos poder trabajar con sql server 2005 desde symfony.

Comentarios (0) Posted by Asier Marqués on Miércoles, Julio 16th, 2008

Archivado bajo Desarrollo Web, Frameworks, Microsoft, PHP, Servidores Web, Sistemas

Desde hace algún tiempo he estado leyendo sobre varios frameworks de desarrollo con php, que me permitiesen de una forma fiable automatizar trabajo que, a pesar de no tener una dificultad notable para alguien que sepa programar, te hace perder un montón de tiempo si quieres hacer las cosas bien.

La opción que más me ha gustado para php es sin duda Symfony y puesto que desarrollo tanto para plataformas UNIX/Linux como para sistemas Microsoft, me interesé por hacerlo funcionar e incluso utilizarla en proyectos que actualmente me encuentro desarrollando bajo sistemas Microsoft.

Voy a detallar como es una instalación de Symfony en IIS. Yo lo tengo funcionando sobre 2003 Server SP2 con IIS6

1 - Se descarga el código fuente de Symfony y se descomprime en un directorio en una de las unidades de disco duro del servidor. (Supongamos D:\symfony)

2 - Se crea un directorio cuyo contenido será el que usemos como sitio web. (Supongamos D:\dir_proyecto)

3 - Abrimos un terminal, nos situamos en “dir_proyecto” y ejecutamos lo siguiente para crear un proyecto:

D:\symfony\data\bin\symfony.bat init-project nuevo_proyecto

Ahora creamos una primera aplicación para ese proyecto:

D:\symfony\data\bin\symfony.bat init-app nueva_aplicacion

4 - Creamos un sitio web nuevo que apunte al directorio “D:\dir_proyecto\web”.

5 - Dentro del ese nuevo sitio web, creamos un directorio virtual que apunte a “D:\symfony\data\web\sf”

6 -  Si usamos isapi rewrite necesitamos ahora aplicar las reglas de redirecciones para nuestro sitio web. En la documentación oficial nos comentan una serie de reglas específicas para entornos de IIS. Esas reglas pueden darnos problemas a la hora de acceder a los archivos del directorio “D:\symfony\data\web\sf”.

Para evitar estos problemas, debemos ser fieles a las reglas definidas en el .htaccess que se ha creado en el directorio “D:\dir_proyecto\web” y añadir las reglas de seguridad relativas a entornos Microsoft.

Las reglas de redireccionamiento quedarían de la siguiente forma:
RewriteRule .*(?:global.asa|default\.ida|root\.exe|\.\.).* . [F,I,O]

RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule (.*) /index.php [L]

Con esto ya deberíamos comprobar que todo funciona correctamente.

Comentarios (9) Posted by Asier Marqués on Martes, Julio 15th, 2008

Archivado bajo Desarrollo Web, Enlaces, Frameworks, Internet, PHP

Cake PHP es uno de los mejores y más serios frameworks que podemos utilizar para desarrollar de una forma rápida y segura aplicaciones en php.

En Hospedaxes han creado un blog que podéis seguir en éste enlace, en el que nos publicar trucos y manuales basados en su experiencia profesional con éste excelente framework.

Blog Cake PHP

Un link sin duda para recomendar a todos los profesionales que desarrollen en php y quieran conocer éste framework para utilizar en algún proyecto.

Comentarios (0) Posted by Asier Marqués on Lunes, Abril 7th, 2008

Archivado bajo Desarrollo Web, Frameworks, PHP

A veces cuando desarrollamos en web para ciertos proyectos que requiren agilidad extrema de desarrollo o sea siempre, no tenemos la posibilidad de ponernos a desarrollar todo desde cero y nuestra opción más viable es optar por el uso de frameworks. En el caso de php tenemos varias opciones muy buenas como Zend Framework, Cake php o Symfony.

En sentido web veo un post que resume una comparativa entre la opción de Zend y Symfony, publicada en karlkatzke.com, que llega a la siguiente conclusión:

  • Comienzo: Symfony tiene mucha documentación y gente por detrás desarrollando y ayudando, algo de lo que anda un poco corto Zend.
  • Testing: Symfony viene con tareas de testing por línea de comandos y genera una clase vacía para ello al crear un controlador. Mientras que Zend no ofrece soporte para testing.
  • Plantillas: Zend tiene un sistema de plantillas un poco verde al que hay que hacerle algunos hacks para realizar algunas cosas. Symfony, al contrario, su sistema de plantillas es muy maduro, al cual le puedes añadir módulos.
  • Plugins: más de lo mismo, Symfony es extensible, Zend no.
  • Módulos de bases de datos: Zend usa ActiveRecord, mientras que en Simfony le puedes añadir el motor que desees, incluso Zend_Db.
Comentarios (18) Posted by Asier Marqués on Jueves, Enero 17th, 2008

Archivado bajo Desarrollo Web, Frameworks, PHP

Juction es un framework para php que nos permite concentrarnos en nuestra lógica de aplicación, simplificando de una forma muy potente todo el trabajo con nuestra base de datos.

Juction mapea las consultas internas a la base de datos cuando trabajamos con objetos, olvidandonos de toda la carga CRUD (Create, Retrieve, Update y Delete).

Lo que sigue es un ejemplo de uso en Juction.

require("/Libs/Junction/Junction.php");
require("/Domain/JunctionUser.php");

//Aquí Juction mapea una típica clase de usuario

$junction = Junction::construct("JunctionUser");
//Ahora jugamos con la clase
$user = new JunctionUser();
$user->setEmail("foo@bar.com");
$user->setPassword("password");
$user->setDate(time());
//Esto insertará un nuevo usuario en la base de datos y devolverá un id, de forma transparente
$junction->save($user);
//un ejemplo con querys parametrizadas
$clause = $junction->createQuery("password = ?");
//Limpiamos el valor que pasamos como parámetro a la consulta
$clause->bind(0, "password");
//Recuperamos en un array de objetos mapeados para juction, el resultado de la query
$users = $junction->loadWhere($clause);

Están trabajando actualmente en el soporte para cosas más avanzadas como INNER JOINS, pero de momento éste proyecto le vendrá muy bien a más de uno.


Comentarios (0) Posted by Asier Marqués on Jueves, Enero 3rd, 2008

Archivado bajo Desarrollo Web, Frameworks, PHP

Aurora es un framework para php, escrito en php 5.2, que nos permite conseguir, de una forma rápida y “cómoda”, una arquitectura Modelo de Vista Controlador (MVC) en nuestras aplicaciones web o de consola.

Las características más importantes que conseguimos con éste framework son:

  • Fácil internacionalización
  • Api simplificada para accesos a base de datos
  • Sistema de caché
  • Lógica de plantillas
  • URL simplificadas
  • Modelos de datos

Aunque esto lo podemos conseguir perfectamente sin necesidad de un framework, no está de más disponer de herramientas que nos faciliten el trabajo para ciertas aplicaciones en las que no necesitemos un control total sobre nuestro código.

Comentarios (2) Posted by Asier Marqués on Martes, Noviembre 27th, 2007

Archivado bajo Desarrollo Web, Frameworks, javaScript

Remy Sharp, creador de Left Logic, nos presenta diferencias en el código de las dos librerías, desde mi punto de vista, más serias, cómodas y elegantes de desarrollar con javascript: JQuery y Prototype.


By rob

Comentarios (0) Posted by Asier Marqués on Viernes, Octubre 26th, 2007

Archivado bajo Desarrollo Web, Frameworks, javaScript

Google Gears es una tecnología (por ahora sólamente utilizable mediante una extensión para Firefox) que nos permite ver y “acceder” a sitios web cuando no estemos conectados a internet (para los que no sabéis de lo que hablo echad un ojo a éste link).

Vortex es una librería en javascript, que se ha currado enteramente Brian Dunnington, que nos permite implementar ésta tecnología en nuestras aplicaciones web de un modo muy sencillo (está pensada para ser más sencilla de usar que Dojo Offline toolkit).

La demo es alucinante. Para ver y comprender cómo funciona sigue estos pasos:

  1. Visita éste enlace. (Es un lector rss que usa ajax para leer las noticias)
  2. Desconecta el ordenador de internet y cierra Firefox. (Mata el proceso si quieres :D)
  3. Abre el navegador, estando sin conexión y visita el enlace de antes.
  4. Verás que puedes acceder a todo el contenido y hacer uso de ajax.
  5. Conectate otra vez a internet y verás cómo se descarga nuevo contenido.

Puedes descargar la aplicación del demo en éste enlace.

Comentarios (0) Posted by Asier Marqués on Viernes, Septiembre 28th, 2007

Archivado bajo Desarrollo Web, Frameworks, javaScript

En Nodstrun.com han publicado un sencillo tutorial en el que nos explican cómo implementar de forma elegante la funcionalidad de autocompletar, usando la librería JQuery.

Se puede descargar el código del ejemplo en éste enlace y ver una demo en éste otro.

AutoComplete en JQuery

Comentarios (0) Posted by Asier Marqués on Miércoles, Septiembre 26th, 2007

Archivado bajo Desarrollo Web, Frameworks, PHP

En el blog de Carlos Leopoldo veo una lista de tutoriales sobre éste framework para php, que facilita la vida bastante a los desarrolladores web.

  • Cómo trabaja CakePHP - Visitar
  • Crea un administrador de favoritos con Scaffolding - Visitar
  • Lista de tareas en ajax - Visitar
  • Utiliza afterSave para las notificaciones de e-mail - Visitar
  • URL bonitas con slugs (usa nombres en lugar de ID) - Visitar
  • IBM: Cómo cocinar sitios web fácilmente (serie de 5 partes) - Visitar
  • IBM: Construye un Wiki de producción (serie de 5 partes) - Visitar
  • Buscador de Flickr - Visitar
  • El Framework CakePHP: Tu primera mordida - Visitar
  • 21 cosas que aprendí con CakePHP - Visitar
  • Utilizando componentes de Zend framework en CakePHP - Visitar
  • Un vistazo a CakePHP framework - Visitar
  • Tutorial para crear un blog con CakePHP - Visitar
  • Ampliación del tutorial del blog - Visitar
  • Capítulo 3 del tutorial del blog - Visitar
  • Servicios web basados en REST (Transferencia de Estado Representacional) con CakePHP - Visitar
  • Agrega Google Maps a tu aplicación - Visitar
  • Verificar registros duplicados en la base de datos - Visitar
  • Formulario simple de autentificación con CakePHp 1.2.x.x - Visitar
  • Un vistazo al nuevo EmailComponent - Visitar
  • Permisos de usuarios y CakePHP ACL - Visitar
  • Cómo utilizar Smarty con CakePHP (SmartyView) - Visitar
  • Cómo instalar CakePHP en MacOS X. - Visitar
  • Cómo crear RSS Feeds con Cake - Visitar
  • Cómo usar la suite de prueba oficial de CakePHP - Visitar
  • Trabajando con las asociaciones HABTM - Visitar
  • Admin Routing (Screencast) - Visitar
Comentarios (4) Posted by Asier Marqués on Martes, Septiembre 18th, 2007