Spiga

Archive for January, 2008

Redirección 301 en Symfony: filtros vs htaccess

January 27, 08 by Pedro Hernández

Este tema salio de una urgencia que tubo mi buen amigo Joan y como ya antes en la lista de symfony en español se había preguntado, salio la idea de resolverlo a modo de competencia. Por mi parte como Filtro de Symfony y por la parte de Joan con htaccess.

¿Para que sirven estas soluciones?
Pues bien en Symfony por defecto las URI no terminan en slash (por temas SEO), es decir si terminan en algo así: www.site.com/moudulo/, esto te retornará un 404. Para evitar este problema y hacer una redirección 301 de www.site.com/moudulo/ a www.site.com/moudulo aquí las soluciones:

Con un filtro en symfony:
Solo colócalo en la carpeta lib de tu aplicación

<?php
class redirect301Filter extends sfFilter
{
  public function execute($filterChain)
  {
    if ($this->isFirstCall())
    {
      $uri = $this->getContext()->getRequest()->getUri();

      if (preg_match('#/$#', $uri))
      {
        $uri = preg_replace('#/$#', '', $uri);
        $this->getContext()->getController()->redirect($uri, 301);
      }
    }

    // Ejecutar el proximo filtro
    $filterChain->execute();
  }
}

Y activas el filtro así:

sshot-2008-01-27-02-11-27.png

Ahora la versión de Joan con htaccess:

Options +FollowSymLinks +ExecCGI

<IfModule mod_rewrite.c>
  RewriteEngine On

  # uncomment the following line, if you are having trouble
  # getting no_script_name to work
  RewriteBase /

  # we skip all files with .something
  RewriteCond %{REQUEST_URI} \..+$
  RewriteCond %{REQUEST_URI} !\.html$
  RewriteRule .* - [L]

  # remove trailing slash
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_URI} ^(.*)/$
  RewriteRule ^(.*)/$ $1 [R=302,L]

  # we check if the .html version is here (caching)
  RewriteRule ^$ index.html [QSA]
  RewriteRule ^([^.]+)$ $1.html [QSA]
  RewriteCond %{REQUEST_FILENAME} !-f

  # no, so we redirect to our front web controller
  RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

# big crash from our front web controller
ErrorDocument 500 "<h2>Application error</h2>symfony application failed to start properly"

Para este caso (y como lo comenta Joan) el RewriteBase / es obligatorio si te quieres evitar problemas.

En las pruebas de rendimiento obviamente htaccess sale ganando, pero queda de tu parte elegir cual usar :) .

Si no es del todo legible el código colocado mas arriba (comienzo a odiar al iG:Syntax Hiliter) puedes descargarlo de aquí filtro_vs_htaccess.zip.

Base de datos y otros recursos para practicar

January 24, 08 by Pedro Hernández

Hace poco tuve que pasar a hacer unas aplicaciones en Visual Basic .Net dejando de lado el tradicional VB6.0 y MS SQL Server 2000. Pero no recordaba que las bases de datos Northwind y Pubs (esas con que nos mataban en la universidad en el curso de base de datos) ya no existen en MS SQL Server 2005, y me puse a buscar llegando a encontrar algunos conocidos:

MySQL:

MS SQL Server 2000/2005/2008:

Puede que haya más, pero siempre puedes crear tus base de datos usando los modelos de ejemplos que se encuentran en Database Answers y si no entiendes los diagramas (el modelo Entidad/Relación o el modelo de notación IE o IDEF) siempre puedes consultar el video tutorial de esta misma pagina o LaBDA y El curso de BD de la Universitat Pompeu Fabra.

¿Conoces más recursos y bases de datos de ejemplos?

Enlaces 2008-01-22

January 22, 08 by Pedro Hernández
  • Nueva release de mi plugin sfCssTabs v0.1.7, En esta agrego soporte para I18N, creadas las carpetas para separar las versiones de symfony 1.0 y 1.1, además de convertir a UTF8 los archivos de configuración YAML. Si tienes algún problema con la carpeta web del plugin, puedes ver el ticket #2609. Además ya tengo una nueva asignación ^^.
    .
  • Symfony 1.0.11 is out. Recién salidito del horno :D
    .
  • Symfonians. Es una nueva aplicación desarrollada con symfony que pretende reunir a todos los usuarios de este framework e incluso recolectar ofertas de trabajo.
    .
  • Chat en español para usuarios de symfony. Un punto más de reunión para todo usuario nuevo o avanzado.

Verificando que este activa la opción I18N y el helper de traducción en Symfony

January 18, 08 by Pedro Hernández

Pues eso, me está tocando reparar un bug descubierto en mi plugin sfCssTabs y a la vez agregarle un detalle más: la I18N.

Para esto he tenido que mirar en la cache una vez regenerada después de activar la opción en el archivo settings.yml de la aplicación (frontend, backend, etc….) .

Entonces para verificar si la opción de I18N está activada solo hay que hacer esto:

<?php
if (sfConfig::get('sf_i18n'))
{
  // do something....
}
?>

Y como todo helper en symfony es una función, para verificar que esté presente el (valga la redundancia) helper de traducción:

<?php
if (function_exists('__'))
{
  // do something....
}
?>

Para más detalles pueden ver el Capítulo 13. Internacionalización y localización de la guía de Symofny.

Listo, salu2 ^^

Steer CMS

January 14, 08 by Pedro Hernández

Y se comienza la semana recibiendo un nuevo proyecto open source construido con Symfony y Blueprint. Se trata de Steer CMS y tiene muy poco de ser agregado a la lista de aplicaciones desarrolladas con symfony: By godiedelrio — 01/14/08 15:51:52.

sshot-2008-01-14-11-24-02.png

Liberado bajo licensia MIT, nos presenta las siguientes características:

  • Plantillas y módulos de publicación generados dinámicamente.
  • Video streaming, animaciones flash, imágenes y documentos manejados desde el propio CMS.
  • Búsquedas por contenido, meta-datos, palabras claves, descriptciones y tags.
  • Calendario integrado para gestión de datos y eventos.
  • Incluye un blog.
  • Gestión de usuarios a través de sfGuard.
  • I18N.
  • Gestión de cache a travez de un archivo YAML
  • WYSIWYG integrado, y mas…

Como buen CMS, en el frontend no encontrarás modulos ya que estos los irás creando a tu medida. Además cabe destacar que para este proyecto se han desarrollado una serie de plugins que no encontraras en el repositorio oficial. Algunos de ellos son:

  • steerCMSBlogPlugin
  • steerCMSCachedBehaviorPlugin
  • steerCMSCalendarPlugin
  • y 8 plugins más.

A primera vista sobre los plugins han omitido el estándar para los nombres, pero esto no es motivo para no probarlo.

_
Fuente: Steer CMS Project

Smashing Magazine le da mala fama a Symfony

January 05, 08 by Pedro Hernández

Hoy Smashing Magazine ha realizado como siempre un excelente artículo como nos tiene acostumbrados titulado Frameworks Round-Up: When To Use, How To Choose?, en el que hablan sobre la arquitectura MVC y los frameworks más conocidos para CSS, JavaScritp, PHP y otros lenguajes. Pero no leyendo muy lejos me doy cuenta de esto:

Symphony – A feature packed framework, but has a reputation for being server-intensive

Con esto lo primero que recordé fue un artículo de Javi llamado Exprimiendo Symfony hasta el límite, esto debido a una prueba de “Hola mundo” que se realizaron a varios frameworks y en la que se concluyó injustamente de que symfony era lento.

Este no es el único comentario que he visto así, parece ser que al igual que otros Smashing Magazine se ha basado de una fuente antigua (pienso yo) dando como resultado aquel comentario. Con esto no quiero dar lugar a pensar que soy un purista de symfony (pero parece que falta poco xD), y entiendo por lo que puede pasar el equipo de esta revista electrónica para dar lugar a tan buenos artículos, pero me queda la duda de ¿que se podría hacer para difundir mejor este framework?.

Sin duda creo que los que seguimos este framework de alguna u otra manera tenemos la difícil tarea de mejorar su difusión y sobre todo aportar para mejorarlo.

A todo esto mi respuesta al artículo fue la siguiente, la cual por cierto no paso la prueba de spam xD:

Thank you for the article. I would like to add something.

Whenever I see an article about the symfony framework, This is seen bad way or shifted to other, this is unfair and the reason I say this is as follows:

I have worked with several frameworks: kumbia, cakephp, codeigniter, zend framework, etc; And can assure you that is the most comprehensive in many respects is symfony and we can check for his community and his book here

The aspect of being seen with the reputation server to consume much was due to a test that was unfair, and you can see the response from the team symfony here and how to optimize

Moreover, in his book officer indicate when it is advisable to use symfony in theparagraph Is Symfony for Me?

I hope that those who see my comment will be encouraged to try symfony framework, not in vain what yahoo is using the new version of del.icio.us ;)

Greetings and remain so.

Creo que a todo esto realizaré un articulo sobre que posee symfony y por que debería ser (al menos) probado =D

_
Fuentes:

Yahoo Research usa drupal

January 02, 08 by Pedro Hernández

Por que no tan solo de symfony vive el hombre Yahoo:

images-drupal-yahoo-research-500x500.jpg

Fuente: Yahoo! usa Drupal