Archive

Archive for the ‘frameworks’ Category

LightVC: Un framework mínimo de vistas y controladores para PHP5

June 19th, 2011 3 comments

En estos días tenía que hacer un sitio web muy básico, estático, y para no repetir líneas y líneas de HTML le iba a meter algo de PHP. Pero no me daba hacer como en los viejos tiempos metiendo includes de header y footer, porque además quería poder manejar URLs un poco más amigables. No me iba a poner a reinventar la rueda para este pequeño sitio ni tenía ganas de usar un framework grande que pese 500 veces más que el sitio en sí para darme un montón de funcionalidades que no iba a usar.

Buscando un rato en Google me topé con LightVC. Es un framework muy básico y livianito que solamente implementa las vistas y los controladores de lo que sería un patrón MVC. Precisamente está pensado para sitios que, o bien no necesitan interactuar con una DB (como en mi caso) o que quieren integrarse fácilmente con un ORM.

Usarlo es muy sencillo. Simplemente nos bajamos del sitio web el esqueleto de una aplicación que zippeado pesa sólo 24 KB, lo descomprimimos, apuntamos nuestro virtual host a la carpeta webroot de nuestro proyecto y ya tenemos un ejemplo andando.

Luego tenemos dos archivos de configuración: config/application.php con algunas constantes e includes básicos y config/routes.php donde definimos un array para el ruteo de los requests. Les muestro el ejemplo que viene al desargar el framework que es bastante claro:

 parseInfo
$regexRoutes = array(

	// Map nothing to the home page.
	'#^$#' => array(
		'controller' => 'page',
		'action' => 'view',
		'action_params' => array(
			'page_name' => 'home',
		),
	),

	// Allow direct access to all pages via a "/page/page_name" URL.
	'#^page/(.*)$#' => array(
		'controller' => 'page',
		'action' => 'view',
		'action_params' => array(
			'page_name' => 1,
		),
	),

	// Map controler/action/params
	'#^([^/]+)/([^/]+)/?(.*)$#' => array(
		'controller' => 1,
		'action' => 2,
		'additional_params' => 3,
	),

	// Map controllers to a default action (not needed if you use the
	// Lvc_Config static setters for default controller name, action
	// name, and action params.)
	'#^([^/]+)/?$#' => array(
		'controller' => 1,
		'action' => 'index',
	),

);
?>

Luego tenemos una carpeta views y una carpeta controllers donde podremos poner nuestras vistas y controladores respectivamente. El esqueleto de la aplicación ya viene con ejemplos de todo esto, lo cual hace muy sencillo comprender cómo funcionan las cosas y dejar nuestra aplicación funcionando en forma muy rápida.

Así que ya saben, la próxima vez que tengan que hacer un sitio muy básico y quieran utilizar un framework muy sencillo que les ahorre trabajo en algunas tareas básicas, peguenle una mirada a LightVC.

node.js vs php & apache

October 6th, 2010 1 comment

En la investigacion de node.js, obviamente busque algunas comparaciones con el viejo y poco querido PHP.

Obviamente intuia que el server de node.js era mucho mas rapido que apache, pero no tenia tiempo de hacer las pruebas, es por eso que busque en internet que se habia hecho al respecto, y aca dejo los datos.

Primero una comparativa de las tecnologias

Apache, PHP node.js
syntax Additional language to web standard ECMA script
try to use common structures
One language to rule them all = reuse parts of your framework on the client side
strings ‘line
line’
‘line\nline’ or “line\n\
line”
templates <code><?php // code ?></code> var s = ‘<code>’;
// code
s += ‘</code>’;
// send response
http://github.com/creationix/microtemplates
database interface PDO + prepared Statements (includes class instance support) Still no prepared statements, 1.5 – 3x slower
Driver update
performance faster
unicode PCRE no Unicode Character Properties / Scripts / Blocks in RegExp (only \w, \W consider Unicode whitespace)
add chars manually to regexp
order no namespaces up to 5.3
simple modules / namespaces
serving files Apache serves static files Overhead to serve static files
Use additional webserver (nginx) or included in web framework
access Only synchronous access
… but easier code
Asynchronous access via closures
… highly nested code
http://github.com/creationix/step
OOP implicit memoization via __get() and reuse of requested key getters (/setters) must access key with other name, bad for iteration or JSON notation
platform many reliable extensions many extensions still experimental
… but the community is dynamic
PostGIS/Postgres MongoDB CouchDB
GIS functionality rich just stuff based on points few
stable yes yes probably
GIS standards full OpenGIS support (except for GeomColl in relational functions, workaround functions) no OpenGIS at all, just points full excepting for GeomColl
GIS indexing no GeomColl
index single geoms
yes yes
GIS performance fast

Fuente: https://docs.google.com/View?id=dfzvhszt_30drxqrvhk

Comparativa de rendimiento

Number of requests performed: 2000
Number of multiple requests made: 50

node.js vs php y apache, request por segundo

node.js vs php y apache, request por segundo

Number of requests performed: 2000Number of multiple requests made: 100

node.js vs php y apache, request por segundo

node.js vs php y apache, request por segundo

Number of requests performed: 2000
Number of multiple requests made: 150

node.js vs php y apache, request por segundo

node.js vs php y apache, request por segundo

Fuente: http://ricallinson.com/nodejs-ash-vs-php-symfony-vs-php-codeigniter

Seguire mi investigacon, cada vez me convenso mas de que node.js tiene un gran futuro.

Forge, el directorio de plugins de mootools

September 26th, 2010 No comments

Taller de extensiones de firefox en buenos aires

September 4th, 2010 No comments
firefox jetpack

firefox jetpack

El sabado 11 de septiembre se dictara un taller de extensiones de firefox, donde usaran como nuevo juguete estrella a jetpack (el nuevo framework para el desarrollo de extensiones en firefox).

Aca les dejo literalmente lo que estan en la web del event segun mozilla.

El taller comenzará a las 11 de la mañana y durará aproximadamente 5 horas. El evento se realizará en las oficinas de Globant en el complejo Costa Salguero, Rafael Obligado 1221, frente al pabellon 4, Ciudad Autonoma de Buenos Aires.

El evento requiere registración previa en http://eventioz.com/events/taller-de-extensiones-de-firefox o en el formulario que se encuentra al final de esta página.  El plazo de registación vence el día viernes 10 de Septiembre a las 15 horas.

Si querés participar, deberás traer tu propia computadora con estos programas instalados:

  • python >= 2.5
  • el ultimo nightly build de firefox (disponible en http://nightly.mozilla.org/ )

Sistemas operativos recomendados:

  • Debian Linux o derivados
  • Mac OSX

Al final de taller se realizara un concurso de extensiones donde se premiaran los mejores desarrollos con merchandising de Firefox.

Esperamos verlos ahi, y que gane el mejor!.

El modelo de Drupal

July 4th, 2008 No comments

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

CodeIgniter – Un framework interesante

May 31st, 2008 1 comment

Entre los cientos de mails que me llegan por dia (si, el 90% es spam), recibi uno con la promocion de un framework llamado CodeIgniter
Al entrar al site del framework la verdad es que me llamo la atension lo interesante que se veia.
Tienen 2 videos donde muestran como usarlo, y el pibe escribe un blog muy simple (post mas comentarios) en 20′.

http://codeigniter.com/

Me tome el laburo de subir el video a youtube (ya que estaba en .mov) para poder incluirlo en el post.

Tambien mande los links a la lista de correo del grupo:
http://groups.google.com/group/webandbeer

Aca va el video.

NOTA: intente subir el video a youtube, pero no lo convirtio por que dice que era muy grande. Lo subi a Wixi y no hubo problema… a tener en cuenta !.