Jose Hernández

Tutorial Symfony 2: 1.- Instalación

Actualizado a 19 de Octubre de 2013 Symfony 2 es uno de los frameworks más usados para trabajar con PHP. Además de facilitarnos muchas cosas a los desarrolladores ya que contiene numerosos bundles (paquetes) que podemos usar tanto con todo el conjunto del framework como por separado, nos ofrece una gran seguridad en sus componentes para poder evitar ataques a nuestras aplicaciones.

Con el propósito de mostrar como se puede crear un sitio web con Symfony voy a crear una pequeña aplicación web e iré explicando paso a paso como voy haciéndola con el fin de mostrar los principios básicos de este framework. La aplicación consistirá en un pequeño blog en el que se podrán insertar noticias y publicar comentarios sobre las noticias.

Leer más

Actualizada la forma de crear un proyecto en Silex

Con las últimas versiones de Silex, la forma de crear un proyecto ha variado un poco. Anteriormente se utilizaba un fichero phar que se podía descargar desde la web del framework, esa forma de crear una nueva aplicación ha quedado obsoleta y desde la propia página web de descarga de Silex nos proponen dos formas distintas de crear una nueva aplicación.

La primera de ellas consiste en descargar un archivo .zip o .tgz con todos los elementos necesarios para hacer funcionar Silex. Una vez descomprimido el archivo descargado tendremos en nuestro directorio dos carpetas una llamada vendor donde están todas las librerías necesarias para que Silex funcione correctamente y otra carpeta web donde tendremos nuestro fichero php para comenzar a programar. Existen dos fichero para descargar uno llamado slim y otro fat lo único que los diferencia es que la versión fat contiene más librerías para poder usar en el proyecto, mientras que con la versión slim las tendríamos que descargar nosotros.

Leer más

Personalizar TableView en iOS

El control TableView en iOS es uno de los controles más utilizados por las aplicaciones, esto se debe a la facilidad que proporciona para usarlo y al alto grado de personalización al que lo podemos someter. En la entrada de hoy vamos a ver como podemos personalizar un TableView para que muestre las celdas con el diseño que nos interese, en este ejemplo el resultado final será como el que se ve en la siguiente imagen.

UITableView Personalizado

Como la finalidad de la entrada es mostrar como personalizar el TableView, los datos que se muestran se han generado en un bucle y en todos ellos se carga la misma imagen como veremos más adelante. En una aplicación normal, estos datos los obtendremos de una base de datos, de un servicio web …

Para comenzar crearemos un nuevo proyecto del tipo Single View Application. Lo primero que vamos a hacer es personalizar el TableViewCell para adaptarlo al formato que necesitemos, para ello añadimos un nuevo fichero de tipo objective_c class al que llamaremos FilmsTableViewCell. Haremos que herede de UIViewController y marcaremos la opción de crear el fichero XIB. A continuación, abrimos el fichero FilmsTableViewCell.h, modificamos la clase de la que hereda a UITableViewCell y creamos las siguientes propiedades:

Leer más

Conexión a base de datos con Node.js

Dando un paso más en la serie de tutoriales sobre Node.js ahora nos toca ver como podemos conectarnos a una base de datos para poder trabajar con la persistencia de datos. Para realizar este ejemplo vamos a trabajar con una base de datos MySQL y utilizaremos el paquete mysql. Comenzaremos creando una carpeta donde almacenaremos nuestro proyecto y abriendo un terminal lo primero que haremos será instalar los paquetes express, jade y el anteriormente mencionado mysql

> npm install express
> npm install jade
> npm install mysql

Como se puede observar vamos a ir volviendo a utilizar todo lo que hemos estado viendo hasta ahora en esta serie de tutoriales para ver como podemos hacer que funcione todo conjuntamente. A continuación vamos a crear una base de datos sobre la cual trabajaremos, para hacerlo sencillo la base de datos tendrá únicamente una tabla llamada universidades que contendrá un identificador, un nombre y la ciudad a la que pertenece una universidad. Podéis descargar un script con la estructura y algunos datos desde aquí.

A continuación vamos a crear un fichero en nuestro directorio de trabajo al que llamaremos server.js y para comenzar escribiremos lo siguiente en él:

Leer más

Obtener imagen almacenada en MySQL desde Android

Un usuario de la web me preguntó como podría hacer que una aplicación Android obtenga y muestre una imagen que está alojada en una base de datos MySQL que se encuentra en un servidor remoto. Con la finalidad de aclararle esta duda he decidido redactar esta entrada.

Android no tiene ninguna función en su SDK para poder atacar a una base de datos MySQL, así que para poder obtener datos de este tipo de base de datos utilizaremos un servicio web. La aplicación Android se encargará de realizar peticiones al servicio y este le devolverá la información solicitada. Si tienes más curiosidad por los servicios web, puedes darle un vistazo a la entrada servicio web en php. En este ejemplo vamos a usar un servicio muy sencillo de tipo REST.

La aplicación que vamos a crear como ejemplo mostrará nombres de ciudades y una imagen de ellas. Para comenzar crearemos una base de datos MySQL a la que llamaremos cities y que contendrá una única tabla que también llamaremos cities. Esta tabla contendrá un identificador que llamaremos id, el cual será de tipo entero y autoincrementable, el nombre de la ciudad name un varchar de 150 caracteres y la imagen photo un mediumblob. Aquí dejo el script para poder descargar, crear y tener algunos datos de la base de datos.

El servicio web que crearemos para recuperar la información de esta base de datos contendrá un fichero al que llamaremos cities.php y su contenido será el siguiente:

Leer más

Parsear XML en iOS con NSXMLParser

Si el otro día veíamos como parsear un documento XML en Android, hoy es el turno de ver como realizar la misma tarea en iOS. Para parsear un XML, el SDK de iOS nos proporciona la clase NSXMLParser que nos facilita la tarea. Esta clase se encarga de notificarle a su delegate cada vez que encuentra una etiqueta de apertura, el contenido de una etiqueta o una etiqueta de cierre mediante los métodos parser: didStartElement: namespaceURI: qualifiedName: attributes:, parser: foundCharacters: y parser: didEndElement: namespaceURI: qualifiedName: respectivamente.

Una desventaja que cuenta NSXMLParser es que no tiene memoria y no recuerda lo que ha parseado anteriormente. Pongamos un ejemplo para explicar lo que quiere decir esto, si tenemos el siguiente XML:

1
2
3
4
5
6
7
8
9
10
<libro>
  <titulo>La última cripta</titulo>
  <autor>Fernando Gamboa González</autor>
  <precio>0,98</precio>
</libro>
<libro>
    <titulo>Muerte sin resurección</titulo>
    <autor>Roberto Martínez Guzmán</autor>
    <precio>0,98</precio>
  </libro>

Cuando se lea la etiqueta <libro> se ejecutará el método parser: didStartElement: namespaceURI: qualifiedName: attributes:, a continuación se encuentra la etiqueta <titulo> y se vuelve a ejecutar el método parser: didStartElement: namespaceURI: qualifiedName: attributes:. El problema que podríamos tener aquí es que no podemos saber cual de las dos posibles etiquetas que aparecen en el XML es a la que se refiere. Pero si continuamos, lo siguiente que se encuentra el parser es la cadena de texto La última cripta, por lo tanto se ejecutaría el método parser: foundCharacters: y aquí tendríamos otro problema porque no podríamos diferenciar si esa cadena pertenece a la etiqueta <titulo> o a cualquier otra que contenga carácteres. Cuando lleguemos a la etiqueta <autor> y se encuentre su cadena de texto, otra vez se ejecutaría el método parser: foundCharacters: y de nuevo no podríamos saber esa cadena a que etiqueta pertenece.

Leer más