martes, 29 de julio de 2014

Silex, un micro-framework para PHP basado en Symfony2

Symfony2 es uno de los frameworks para PHP más completos, versátiles y potentes que existen actualmente en el mercado. Pero, ¿Qué ocurre si no necesitamos tanta potencia? ¿Que hacemos si queremos desarrollar una pequeña página corporativa donde la potencia de Symfony2 es más un estorbo que una ayuda? En esos casos en lugar de usar Symfony u otro framework potente como Zend se suele optar por personalizar un Wordpress, un Joomla o cualquier otro CMS. El problema entonces es que perdemos el control del desarrollo en temas como gestión de permisos, teniendo que adaptar nuestros requerimientos a lo que pueda hacer el CMS elegido. Sin embargo existe una tercera vía: El uso de un micro-framework que sin ser tan potente como un Symfony o un Zend nos proporcione la suficiente versatilidad para desarrollar una pequeña página web de forma ágil. Y en este caso la propia SensioLabs y Fabien Potencier, creadores de Symfony, nos dan la solución: Silex.

Silex es un micro-framework para lenguaje PHP basado en componentes de Symfony2. Funciona con PHP 5.3 o superior y tiene licencia MIT (código fuente libre). La gran potencia de Silex es que aprovecha gran parte de los componentes del núcleo de Symfony2, que están sobradamente probados, pero en cambio en mucho más fácil de usar que Symfony2. El paquete básico de Silex permite desarrollar páginas web desde cero, proporcionando un sencillo sistema de definición de rutas propio y poco más. Sin embargo es posible añadir a Silex multitud de componentes externos que también usa Symfony: desde Twig hasta Doctrine, pasando por Swiftmailer y algunos de los componentes más potentes de Symfony como sus formularios, su sistema de validación, su sistema de traducciones, etc.

La documentación de Silex es muy completa, en la línea de los otros productos de SensioLabs.


Ejemplo: Hola mundo en Silex

require_once __DIR__ . '/../vendor/autoload.php';

$app = new Silex\Application();

$app->get('/', function() {
    $output = 'Hola mundo.';
    return $output;
});

$app->run();

viernes, 11 de julio de 2014

Nueva imágen corporativa y nueva web

Este mes estamos de celebración en iFraktal pues estrenamos, logotipo, imagen corporativa y página web. El diseño y las tendencias están en constante cambio y eso nos obliga también a nosotros a seguir esa ola de renovación constante.

Nosotros somos los primeros en aconsejar a nuestros clientes que una vez la página web está acabada, lo que hay que hacer es un proceso de renovación constante, algo que atraiga siempre la atención hacia su carta de presentación, es decir, su página web. Es por ello que nosotros nos hemos aplicado nuestro própio consejo y "nos hemos lavado la cara".

Así mismo hemos inaugurado un nuevo blog corporativo integrado dentro de la nueva página web, dejando este blog, que también renovaremos estéticamente, como herramienta de soporte técnico para desarrolladores internos y externos. Seguiremos por supuesto publicando información técnica, artículos y trucos siempre que podamos.


Enlaces de interés

miércoles, 28 de mayo de 2014

Software a medida

El software a medida es un producto de Ingeniería de Software desarrollado especialmente para un cliente, teniendo en cuenta los requerimientos del mismo y las políticas de su empresa u organización.

El software estándar por su parte está orientado un uso masivo por clientes con necesidades similares. Algunos productos de software estándar permiten también ciento grado de personalización de forma que con un desarrollo particular pueden adaptarse a las necesidades del cliente, aunque es difícil que se adapte exactamente a los requerimientos y políticas del mismo. Un ejemplo serían los diversos CMS (sistemas de gestión de contenidos) como Wordpress, Joomla, Prestashop, Drupal, ... Otros productos de software estándar no permiten ningún tipo de personalización.

A priori el software a medida siempre es más caro porque requiere más trabajo, pero cumple exactamente con las necesidades del cliente. Sin embargo en ocasiones las adaptaciones de software estándar a las necesidades de un cliente pueden costar tanto como hacer el software a medida desde cero. Todo depende de lo que el producto inicial se adapte a los requerimientos del cliente.

Como analogía entre software a medida y estándar se puede usar, con restricciones, el caso de un traje a medida frente a otro comprado en un centro comercial. Muchos clientes tendrán bastante con un traje del centro comercial al que le hacen unos mínimos arreglos. En cambio si el cliente tiene necesidades especiales por ser por ejemplo muy alto es difícil que encuentre un traje que le sirva en el centro comercial y tendrá que pedir a un sastre que se lo confeccione a medida. Otra posibilidad sería comprar el traje más grande del centro comercial y luego pedir a un sastre que se lo alargue. El coste del arreglo generalmente será menor que el traje a medida pero el resultado tampoco será el mismo.


Ventajas del software a medida:

  • Se adapta perfectamente a las necesidades del cliente.
  • No requiere un cambio en la forma de trabajar de la empresa u organización.
  • Se puede modificar y ampliar fácilmente.
  • Posibilidad de entregas modulares.
  • El software es propiedad del cliente.

Desventajas del software a medida:

  • Generalmente es más caro que el software estándar.
  • La implementación es más costosa y por lo tanto más lenta.

¿Cuando conviene desarrollar software a medida?

Una empresa u organización preferirá desarrollar software a medida cuando las necesidades de sus sistemas de información no se adapten exactamente a ningún producto comercial, personalizable o no, ya sea porque tienen requerimientos especiales o porque no deseen cambiar sus procesos de gestión. Los requerimientos especiales pueden ser cualquier cosa: desde informes especializados hasta procesos de gestión no habituales. La decisión de desarrollar software a medida puede afectar a la competitividad del cliente a medio plazo, por lo que es una decisión que hay que meditar bien antes de tomar una decisión definitiva.

jueves, 22 de mayo de 2014

PHP avanzado: Llamadas recursivas en funciones anónimas (closures)

PHP

Una closure es una función sin nombre que puede por ejemplo asignarse a una variable o pasarse como parámetro a otra función. PHP soporta closures desde la versión 5.3 con una restricción importante: El ámbito de las variables es totalmente privado. Esto quiere decir que desde dentro de la closure no se puede acceder a variables externas a no ser que sean variables globales y las declares con la palabra clave global. Una excepción a esto son las variables superglobales. Además desde PHP 5.4 se puede acceder a $this si la closure se declara dentro de un método de una clase. Esa restricción no es un problema por si mismo, pero restringe el uso de variables locales cuando declaras la closure dentro de una función o de un método de una clase. Para solucionar eso se usa la palabra clave use. Entonces si queremos hacer una llamada recursiva a la closure tendremos que pasar una referencia a la propia closure a través de la palabra clave use. Por ejemplo (*):

$factorial = function( $n ) use ( &$factorial ) {
    if( $n == 1 ) return 1;
    return $factorial( $n - 1 ) * $n;
};

(*) Ejemplo sacado de Stack Overflow.

martes, 20 de mayo de 2014

Añadir métodos a una clase en Javascript

Javascript es un lenguaje de programación que está cada vez más en alza debido a sus enorme flexibilidad y a sus muchas posibilidades. Una característica que los principiantes en este lenguaje no suelen conocer es que se puede añadir y modificar el comportamiento de los métodos de una clase posteriormente a la declaración de la misma. Y esto puede hacerse tanco con clases propias como con clases nativas del lenguaje.

Por ejemplo la clase String, que es nativa de Javascript, tiene muchos métodos útiles como pueden ser trim(), substring(), indexOf() o replace(); pero carece por ejemplo de un método stripTags() que elimine las etiquetas HTML de una cadena de texto. Sin embargo podemos añadirlo fácilmente:

String.prototype.stripTags = function() {
    return this.replace(/<(?:.|\n)*?>/gm, '').trim();
}

Una vez declarado podemos hacer lo siguiente:

var x = "<p>Hola <b>mundo</b>.</p>";
x = x.stripTags();
document.write(x);

El resultado será "Hola mundo" sin los tags HTML.

martes, 22 de abril de 2014

Cual es el mejor IDE para programar en PHP

Un IDE (Integrated Development Environment) o entorno de desarrollo integrado es la herramienta que los programadores usamos para programar. En realidad los programadores somos gente simple: lo único que de verdad necesitamos para programar es un buen editor de texto. Luego si queremos probar nuestro desarrollo necesitaremos el compilador o intérprete del lenguaje de programación que estemos usando y dependiendo del caso igual algunas herramientas adicionales como un servidor web o la máquina virtual de Java. Pero de entrada lo único imprescindible es un editor de texto.

Como editor de texto nos vale casi cualquier cosa: desde el inútil bloc de notas de Windows hasta el complejo EMACS de GNU, pasando por el Notepad++ o el Ultra Edit en Windows, el gEdit en Ubuntu o el VI o el Nano en cualquier distribución Linux. Los programadores que ya peinamos canas recordamos aun los tiempos en que los IDE no se habían generalizado y la nuestra única herramienta era un editor de textos.

¿Que es un IDE?

Un IDE es un conjunto de herramientas integradas en un único paquete que proporciona a los programadores un marco para el desarrollo de aplicaciones informáticas. Un IDE puede servir para programar en un único lenguaje, en varios lenguajes o ser de propósito general (para cualquier lenguaje, generalmente añadiendo plugins).

Un IDE puede tener algunas de las siguientes herramientas (o todas ellas):

¿Cual es el mejor para programar en PHP?

Y ahora que ya he explicado que es un IDE, ¿Cual es el mejor para programar en PHP? Pues la pregunta es complicada. Cada programador tendrá sus preferencias, pero personalmente después de haber probado varios tanto en Windows como en Linux me quedo con PhpStorm.

PhpStorm es un IDE comercial multiplataforma de JetBrains que incluye editores para PHP, HTML y JavaScript, análisis de código en tiempo real, prevención de errores y mucho más. A mi me gusta sobre todo porque es muy rápido y bastante intuitivo de usar. He probado otros IDE como Eclipse y NetBeans, ambos gratuitos y open source, pero prefiero la rapidez de PhpStorm.

martes, 15 de abril de 2014

iTherm, una app para controlar la fiebre infantil

Hoy quiero dar difusión a un proyecto de un amigo que está buscando financiación. Se trata de iTherm un brazalete termómetro para niños que se conecta vía bluetooth con un dispositivo móvil (iPhone o Android) para realizar una medición constante de la temperatura del niño, pudiendo configurarse alertas para que avise si la temperatura supera un cierto límite. Dejo a continuación el vídeo de la entrevista que le han hecho recientemente La Vanguardia.