Consejos para hacer software de calidad

. jueves, 2 de enero de 2014
0 comentarios

Seguro que cualquier desarrollador de software se ha visto envuelto en lineas de código espageti, funcionalidades repetidas  en varios archivos, classes enormes con miles fe lineas. Siguiendo los siguientes consejos, extraídos de 'clean code', se puede. mejorar considerablemente nuestro codigo

  1. Utilizar nombres significativos y claros que definan la responsabilidad de la clase o función. Con esto evitamos incluir comentarios ya que el propio codo es autoexplicativo. Si es necesario que pares un momento para elegir el nombre es recomendable que lo hagas porque lo vas ha agradecer.
  2. NO utilizar la notación húngara
  3. Utiliza funciones pequeñas que puedan testear con facilidad, que hagan una sola cosa.
  4. No utilizar mas de tres parámetros en funciones, utiliza objetos de argumento
  5. Utiliza los comentarios imprescindibles intenta que el código sea autoexplicativo.
  6. Crea test para tu código. Te ayuda a comprobar el correcto funcionamiento, y el mantenimiento del software.
  7. Mejora siempre que sea posible tu código. Pon en practica la regla de los boyscouts.

¡¡Vuelvo a Granada!!

. viernes, 11 de febrero de 2011
0 comentarios

Estoy planeando hacer un viaje a Granada, para celebrar mi aniversario de bodas, tengo previsto visitar el albaicin, la zona de las teterias, visitar el mirador de San Nicolas y sobre todo la Alhambra.
Que más podría visitar, ¿alguna sugerencia?

Os dejo algunas fotos:

Alhambra de Granada. Desde mirador de San Nicolas




Alcazaba

Envio de mail mediante Java. Java mail

. jueves, 10 de febrero de 2011
0 comentarios

Es posible que se nos plantee la necesidad de enviar mensajes de correo electrónico desde una aplicación java. Se nos pueden presentar varias dudas a la hora de programar estos envíos de correo electrónicos.

El API JavaMail es una extensión estandar para leer, componer y enviar mensajes electrónicos. Usamos este paquete para crear componentes tipo Mail User Agent (MUA), similares a Outlook. Su objetivo principal no es el de enviar, transportar o recibir estos mensajes, como prodría hacer Sendmail o James. Java mail esta diseñado para enviar y recibir mensajes de correo electrónico.

Protocolos.
Para llevar a cabo el envío de mensajes de correo electrónico se sirve de varios protocolos, tales como SMTP, POP o IMAP. Estos se situan en la capa de aplicación de la pila de protocolos OSI. Estos protocolos no son objetivo de esta entrada, por lo que no se va a profundizar en ellos. Simplemente aclarar que el protocolo SMTP es el protocolo utilizado para enviar mail, y bien los protocolos POP o IMAP son los protocolos de los que nos servimos para descargar los mesajes de correo electrónico que se encuentran en nuestro servidor de correo.

Plataforma de desarrollo Java Mail
Javamail permite el envío y la recepción de mensajes de correo electrónico y nos provee de clases esenciales para realizar estas tareas.



  • Session
Define las propiedades por usuario y globales que definen la interface comunicación entre el cliente de correo electrónico y la red. Esta clase actua como factoría de objetos Tranport y Store, que se ocupan de los protocolos de acceso y transporte. Es decir la clase Session administra las opciones de configuración, autentificación e interación con el sistema de mensajería. En el siguiente código se muestra como se utiliza

Properties p = System.getPtoperties(); p.put("mail.smtp.host", host); p.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(p,null);


  • Message
Message es una clase abstracta que define una colección de atributos y contenidos de un mensaje de correo electrónico tales como el destinatario, el emisor la dirección... Además se encarga de crear un mensaje de correo electrónico. El api de JavaMail contiene la clase MimeMessage.


MimeMessage m = new MimeMessage(session)
try{
m.setFrom();
m.addRecipient(Message.RecipientType.TO,new InternetAddress(to));
m.setSubject(asunto);

Multipart mmp = new MimeMultipart();

BodyPart bp = new BodyPart();

bp.setContent(texto,"text/plain");
mmp.addBodyPart(bp);
m.setContent(mmp);

Flag fs = m.getFlags


}
catch(Exception e){
e.printStrackTrace();
}



  • Store
La clase Store define una base de datos para almacenar los objetos Folder, especifica el protocolo de acceso con el que acceder a los mensajes, además permite almacenar mensajes en en la carpeta del servidor y cierre de sessiones.

Es posible crear un objeto Store en tres lineas:

Store store = null;
try{
store = session.getStore("pop3");
store.connect(hostEntrante, usuario, password);

}
catch(Exception e){
e.printStrackTrace();
}






  • Folder
Representa una carpeta que contiene uno o más mensajes de correo, aunque tambien es posible que contenga alguna subcarpeta.


Folder folder = store.getFolder("INBOX");
folder.open(Folder.READ_WRITE);
if(folder.isOpen())System.out,println("Folder abierto");



  • Address
Addres es una clase abstrabta que modela una direccion de IP o bien URL, esta clase comprueba la dirección a la que enviamos el correo ó la dirección del remitente es correcta (en caso de que no sea correcta lanza una excepción)


Como mandar un mensaje de correo electrónico



try{
Transport t = session.getTransport("smtp");
t.connect(host,usuario,password);

if(m == null)return;


t.sendMessage(m,m.getAllRecipients());
t.close();

}
catch(javax.mail.MessagingException e){
e.printStrackTrace();
}





GWT. ¿Es una buen framework para el desarrollo de aplicaciones Web Java?

. lunes, 24 de enero de 2011
0 comentarios

Empezar a trabajar con Google Web ToolKit no es nada complicado, especialmente si tienes un buen conocimiento del lenguaje de programación Java y estas familiarizado con algún entorno de desarrollo, como puede ser Eclipse o Netbeans, los cuales tienen disponibles plugins para GWT. En este capitulo vamos a crear a modo de ejemplo una aplicación Google Web ToolKit, pero posteriormente vamos a crear un proyecto utilizando Eclipse, pero en primer lugar vamos a revisar el concepto de ‘cloud-computing’ y el Google App Enginge.

Google App Engine.

Para empezar ha hablar de los términos GWT y Google App Engine necesitamos tener claros los conceptos de ‘Cloud-Computing’ o ‘Nube’. En la actualidad hay una gran variedad de proveedores de estos servicios, pero no todos ofrecen exactamente lo mismo, ni aportan los mismos niveles de calidad en estos servicios.

En primer lugar vamos ha clasificar los diferentes niveles que podemos encontrar en el llamado ‘Cloud-Computing’, sabiendo que todos ellos tienen en común estas plataformas es que ofrecen una arquitectura software en la cual una instancia de un servicio puede responder a los requisitos de negocio en función de los picos de trabajo no previsibles. Podemos encontrar tres tipos diferentes de servicios que ofrecen los proveedores de Internet. El primero de ellos, partiendo del nivel más bajo, es el denominado Infraestructura como Servicio y es un medio de ofrecer un espacio de almacenamiento y una capacidad de computo y procesamiento. La Plataforma como Servicio encapsula todo el entorno todo el ambiente de desarrollo y una carga de servicios. En este nivel encontramos el Google App Engine. Y el último de esta clasificación es el de Software como Servicio que se encuentra en la capa más alta. En este último tipo de cloud-computing podemos encontrar los servicios que ofrece el Google App Engine como el de envío de e-mail, imágenes y XMPP.

Google App Engine ofrece entorno de desarrollo, unas tasas de procesamiento, y un espacio de almacenamiento que si no superan un límite, bastante razonable, suelen ser gratuitos. Además los recursos que se van a asignar a tu aplicación van a estar fijados en función de sus necesidades. En este ambiente de desarrollo nos vamos a encontrar con una base de datos y un contenedor de Servlets entre otros. Con lo cual, el desarrollador se va a olvidar de instalar y configurar estos requisitos de la aplicación (en caso de necesitarlos)

¿Qué necesita para empezar a programar con GWT?

Es posible desarrollar con Google Web Toolkit en prácticamente la totalidad de los sistemas operativos existentes, Windows, Linux y Mac (los ejemplos de este libro se han implementado en un Windows)

Pero antes de empezar es necesario tener instalado Java, en una versión 1.4.2 o superior. Es recomendable comprobar que la versión de Java es la correcta para eso ejecutamos en el Terminal del sistema:

C:\>java –version

Java version “1.6.0_21”

Java(TM) SE Runtime Enviroment (build 1.6.0_21-b07)

Java HotSpot(TM) Client VM (Build 17.0-17, …

En caso de no tener instalado Java podemos descargarlo de aquí.

El siguiente paso es descargar el entorno de desarrollo Eclipse (en la versión 3.2 o superior). En caso de no tenerlo instalado puede descargarlo de la Web oficial del proyecto aquí.

Una vez instalado el Eclipse y por ultimo para tener nuestro entorno de trabajo listo para desarrollar aplicaciones con GWT en necesario instalar el plugin en el propio Eclipse. Para esto vamos al menú superior de nuestro Eclipse a “Windows à Peferences à Install Update” y añadimos el sitio de descarga del puglin de GWT, http://dl.google.com/eclipse/plugin/3.6.

Una vez terminado el proceso de instalación es necesario reiniciar el Eclipse y podremos empezar a descubrir las posibilidades que ofrece GWT.

¡Hola mundo!

Una vez preparado el entorno de trabajo, ya podemos a pasar a crear el primer proyecto, el habitual ¡Hola Mundo! Para comenzar a ver y entender el funcionamiento de GWT. Para ello creamos un nuevo proyecto Web Application Project.

Una vez creado el proyecto podemos ver la estructura creada por el Eclipse:

-src

+pkge.gwt

+pkge.gwt.client

+pkge.gwt.server

+pkge.gwt.shared

-test

+pkge.gwt.client

\war

\war\manualGWT.css

\war\manualGWT.html

\war\WEB-INF

\war\WEB-INF\



Ahora podemos probar el proyecto que hemos generado, para ello lo compilamos y luego lo ejecutamos desde el Eclipse, que nos va a preguntar donde queremos ejecutarlo si en modo local o en un servidor externo. Y con esto ya tenemos corriendo la aplicación. Como hemos visto en la figura anterior el asistente genera una serie de paquetes entre ellas esta la clase ManualGWT que implementa la interface EntryPoint, implementado el método onModuleLoad(), en el que se tratan todos los eventos que interactúan en la comunicación con el usuario.



Nuevo estilo, espero que os guste

. lunes, 17 de enero de 2011
0 comentarios

Bueno por fin me he decido por un nuevo estilo para el blog, espero que os guste. Esta diseñado por Moses France. Creo que es menos claustrofobico que el antiguo.

No he olvidado la historia que estaba contando, mañana prometo seguir con ella

Online TV en tu PC

. miércoles, 12 de enero de 2011
0 comentarios

En sólo 5 minutos su ordenador se convertirá en una TV!
No necesita plato, receptor, ni nigún tipo de servicio de cable o satélite Todo lo que usted necesita es una conexión a la Internet y un ordenador. Vea todos los canales del mundo que usted quiera. Miles de usuarios gozan ya de una increiblevariedad.

No se pierda la oportunidad de ver miles de canales por el costo de unos boletos de cine! Son sólo centavos en comparación con lo que pueden costarle los servicios por cable y satélite por mes, durante muchos años. Y lo mejor de todo es que, una vez que usted ha comprado el software, no debe pagar absolutamente nada más... Pulsa aqui y podras verlos



Absolutamente NINGÚN gasto mensual – Live TV está libre de cuotas o suscripción mensual. El paquete incluye una licencia de por vida para actualizaciones gratuitas.
2150 canales - Escoja sus canales favoritos entre 2150 canales internacionales vía satélite de la mayoría de los países, incluyendo los EE.UU., Gran Bretaña y muchos más.
No requiere hardware adicional - Este paquete incluye solo software, que puede ser instalado en cualquier PC u ordenador portátil con conexión a la Internet. No se necesita agregar ningun tipo de hardware como sintonizador de TV o tarjeta DVR.
Facil de usar – Cualquiera puede usarlo. Una simple interfaz lo hace tan facil como si estuviera viendo televisión de un aparato común!
Funciona en cualquier lugar del mundo – Vea TV vía Satélite en su PC en cualquier país con acceso a la Internet.
100% Legal – Este software no es ilegal, ya que transmite todos los canales gratuitos vía satélite disponibles en la Internet.
Funciona sobre Plataforma Windows – Funciona sin problemas en cualquier PC, y con cualquier versión del sistema operativo Microsoft Windows, incluyendo Windows 98, XP, Vista o Windows 7.

Pulsa aqui para verlos


Especificación, Diseño e Implementación de un Cliente de Correo Electrónico usando JavaMail.

. miércoles, 5 de enero de 2011
0 comentarios

Bueno estos dias de vacaciones he tenido tiempo para mirar hacia atras y he revisado mi proyecto fin de carrera. Simultaneamente he descubierto Bubok, un portal que permite publicar tus obras a un coste muy asequible. Y bueno me he lanzado a publicar mi proyecto fin de carrera "Especificación, Diseño e Implementación de un Cliente de Correo Electrónico usando JavaMail". Ya puedes comprarlo en Bubok

OpenXava 4.0. Espectacular.

. martes, 14 de diciembre de 2010
0 comentarios

Si alguna vez habeis estado buscando alguna herramienta de desarrollo rapido para crear aplicaciones Web de gestion, este producto es lo que buscabais. Ya publique un articulo de esta herramienta hace algun tiempo, pero por aquel entonces estaba todavia en ciernes, y tenia algunos errores en tiempo de ejecución y era algo complicado hacerlo funcionar (si no tenias un buen conocimiento sobre este este tipo de aplicaciones).

Con esta version la mejora ha sido espetacular, y de verdad que es verdaderamente simple montar una aplicacion tipo lista-detalle con tan solo crear unas cuantas clases PJO y establecer las relaciones entre clases, si es que las hay.

Os dejo el enlace de openXava por si quereis echar algun vistazo al producto y por si quereis probar alguna demos on-line

Tambien comentar, que la documentación es verdaderamente útil y extensa, y la podemos encontrar tanto en español como en ingles, ruso...

Una memoria USB implantada en el dedo

. jueves, 2 de diciembre de 2010
0 comentarios



Jerry Jalava, un joven desarrollador de software de Finlandia, perdió su anular derecho durante un accidente ocurrido con su moto. Cuando visitó al médico en busca de una prótesis, éste le sugirió la posibilidad de insertarle una memoria USB desmontable de 2 GB. Y el chico aceptó encantado.

El accidente ocurrió en mayo del año pasado, al chocar con su moto recién estrenada contra un ciervo. Fue en la carretera que se extiende entre Helsinki y Riihimäki, situada a unos 70 kilómetros al norte de la capital finlandesa.
“Cuando la moto se detuvo, me levanté y me quité el casco y los guantes. Empecé a decir palabrotas, y cuando intenté sacar los cigarrillos del bolsillo, me di cuenta de que me faltaba medio dedo“, relata Jerry en su blog.

Pero este domingo recién se conoció la historia, luego de que un blog dedicado a la tecnología y vanguardia publicase un fotomontaje que sugería que la integración entre el ser humano y la tecnología llegaría pronto. Entonces Jerry envió fotos de su mano demostrando que a él ya le había llegado.

El dedo biónico causó total sensación en la web. El finlandés explicó que “se trata de un implante desmontable con un lápiz de memoria USB dentro. Cuando tengo que usar el USB, simplemente dejo mi dedo en la ranura y cuando termino lo recojo“.

25 años de c++

. viernes, 15 de octubre de 2010
0 comentarios

En Slashdot publican una interesante entrevista, con motivo de estos 25 años de vida de este lenguaje de programación, a Bjarne Stroustrup, creador del lenguaje de programación C++. El 14 de Octubre de 1985 se publicó la primera guía de referencia de este lenguaje de programación, uno de los más populares pero también uno de los más odiados.

Al final de la entrevista da unos consejos para los nuevos programadores. Espectacular.

Primer programa

. lunes, 27 de septiembre de 2010
0 comentarios

Dado que C ++ fue desarrollado a partir de C, comenzaremos por el principio. Vamos a hacer un programa tipo “HolaMundo”, para empezar a probar y trabajar con C.


Lo primero que hay que preparar es el entorno de desarrollo, para esto hay infinidad de posibilidades, pero puedes preparar tu entorno de programación siguiendo esta guía de la Juan Antonio Pedreira.


Una vez preparado el entorno, escribimos este código en el que podemos observar los elementos básicos elementales de un programa en C: las directrices del prepocesador y la funcion principal main.


/**

* Librerias de aplicacion

*/

#include

#include

/**

* La funcion main(void) es una funcion especial donde se

* comienza a ejecutar un programa C

* */

int main(void) {

puts("¡¡¡HOLA MUNDO!!!"); /* Imprime "HOLA MUNDO"*/

return 0; // fin del programa

}

Tras escribir el código es necesario compilarlo, y posteriormente ejecutarlo.Mañana veremos los diferentes tipos de datos primitivos del lenguaje C. Hasta pronto.

Curso C / C++. Prologo.

. sábado, 25 de septiembre de 2010
0 comentarios

En el mercado existe una innumerable cantidad de lenguajes de programación, comenzando por los lenguajes de tipo ensamblador, y pasando posteriormente por ADA, COBOl, BASIC, C, C++, JAVA, etc…

Pero se puede decir, que aunque Java tuvo una aceptación excepcional, y es por el momento el lenguaje dominante, no nos podemos olvidar de C.

En la actualidad los sistemas operativos, gran parte de los grandes videojuegos, y las aplicaciones que necesitan funcionar bajo tiempo real se siguen programando en C/C++.

C fue diseñado y desarrollado en los laboratorios Bell de AT&T por Dennis M. Ritchie en 1972, sufriendo algunas modificaciones y mejoras en su evolución hasta llegar a nuestros días. Este lenguaje tiene una historia de 38 años, en los que ha sido el mejor en su campo y ningún lenguaje de programación lo desplazado de su ámbito de aplicación. Esto sin olvidar que este lenguaje de programación tiene una curva de aprendizaje algo más inclinada que otros lenguajes.

Entre las características básicas de C podemos encontrar la programación estructurada, utiliza de forma natural las funciones primitivas del sistema (por lo que produce un código objeto altamente optimizado), las variables y datos están tipados.


Bien en esta serie de artículos, voy a intentar que queden claros algunos conceptos acerca de este lenguaje de programación, ilustrando cada capitulo con ejemplos y ejercicios propuestos.

Hasta el lunes

Si el sector de la construcción trabajara como los informáticos

. viernes, 12 de marzo de 2010
0 comentarios









IPAD, marca registrada ... por otros

. viernes, 29 de enero de 2010
0 comentarios

Segun el diario 'El Pais' la decisión de llamar al nuevo aparato estrella de Apple con el nombre de IPAD, puede acarrear problemas legales, ya que esta marca esta registrada desde el 2003 por Fujitsu en EEUU y STMicroelectronics para Europa.

Apple tiene previsto recurrir para conseguir los derechos sobre el término iPad.

Google crea Google Energy, lo siguiente... ¿hacer aviones?

. martes, 12 de enero de 2010
0 comentarios

Google ha creado una empresa subsidiaria, llamada Google Energy, y ha pedido a las autoridades federales de los Estados Unidos permiso para entrar en el mercado de la compra y venta de energía. Google es una gran consumidora de electricidad debido a sus servidores y, desde hace tiempo, está preocupada por obtener fuentes alternativas. En sus instalaciones tiene una planta solar y mantiene planes de investigación en el terreno de las energías alternativas que van, por ejemplo, en la línea de instalar servidores en el mar para aprovechar la energía del movimiento marino.

Según Cnet, Google no tiene un plan para convertirse en un suministrador comercial de energía pero no descarta que la compra y venta de energía integre parte de su futuro portafolio.

Carta a los Reyes Magos

. miércoles, 23 de diciembre de 2009
0 comentarios

 

Queridos reyes magos, este año no me he portado muy bien, sobre todo con mi mujer, por que me cuesta mucho pensar solamente un poquito en ella, y tener algún detalle. Ademas este año ya he tenido un regalo, mi hijo Javier, el regalo más grande que podía recibir, pero bueno, por pedir que no quede, por que siempre siembre hay alguna cosita por hay que te hace ilusión.


  • E-reader.

  • Móvil pantalla táctil con Andriod (HTC).

  • Unas botas de montaña

  • Reproductor MP4 o MP3

Aparte de esto me gustaría un poco más de tiempo para estudiar y si es posible una plaza de profesor en algún instituto.



Un barco de bandera turca ha fracturado el cable submarino de fibra óptica que une La Línea de la Concepción

. martes, 22 de diciembre de 2009
0 comentarios

Un barco de bandera turca ha fracturado el cable submarino de fibra óptica que une La Línea de la Concepción (Cádiz) con la Ciudad Autónoma de Ceuta, por lo que las autoridades marítimas han abierto una investigación.

Según han informado fuentes portuarias, la compañía Telefónica ha detallado que el suceso se produjo el pasado fin de semana y que el barco turco fracturó el cable cuando levantaba el ancla.

En este proceso el ancla del buque, que había fondeado en una zona no permitida para este tipo de embarcaciones, se enredó con el cable y lo fracturó en uno de sus tramos próximos a la costa gaditana.

La compañía telefónica ha solicitado datos a la Capitanía Marítima de Ceuta sobre el buque con la intención de pedir responsabilidades.

En el transcurso de la jornada de hoy se espera que un buque cablero proceda a reparar el tramo de cable dañado.

(Elmundo.es)


--
Juan Pedro Martínez Bruno

Una pareja de Girona sortea su casa en Internet

. lunes, 21 de diciembre de 2009
0 comentarios

Una pareja de Breda (Girona) acuciada por las deudas y que está sin trabajo, ha decidido sortear su casa y un apartamento propiedad de unos tíos de la mujer situado en Sant Pere de Vilamajor (Barcelona), vendiendo participaciones de 50 euros. El marido, un diseñador gráfico de 49 años que tenía una copistería en esta población, en la que también trabajaba su mujer, pretende recaudar suficiente dinero para liquidar la hipoteca, según publica hoy el Diari de Girona.

La pareja decidió ponerlo a la venta de esta forma "porque la situación es cada vez más complicada y antes de que se lo quede el banco preferimos sortearlo", según ha explicado a Efe Esther Espada, copropietaria de la vivienda, que ha contado que la idea se les ocurrió al enterarse de que una vecina de Llinars del Vallés (Barcelona) también lo había hecho.

El piso, de 110 metros cuadrados, en el que vive la pareja y sus dos hijas de 4 y 2 años, está en el centro de Breda y tiene 3 dormitorios, 2 baños completos, salón, cocina y dos terrazas con vistas al Montseny, y se puede ver en la pagina web sorteo2pisos.com.

Según Esther Espada, tienen una hipoteca de 260.000 euros que quieren cancelar y deudas de la copistería, que estaba en el centro del pueblo y que tuvieron que cerrar en noviembre por problemas de liquidez e impagos de los clientes, entre otras cuestiones. Para poder participar en el sorteo, cuyas bases las ha redactado una notaria de Llinars del Vallés (Barcelona) hay que hacer un ingreso en una cuenta que figura en la web.

El otro piso que sortean es de un tío de Esther, cuya mujer está también en el paro, que está en venta desde hace un año y que no lo consiguen vender porque a los compradores que han aparecido el banco no les dan una hipoteca. La pareja ha calculado que tiene que vender 8.000 boletos por cada piso, y si lo consiguen antes de que acabe el año el sorteo se hará el 2 de febrero. En caso contrario, se ampliará la venta de participaciones dos meses y se sorteará el 2 de abril. Aseguran que toda su familia y sus amigos les apoya porque consideran que es una idea muy buena para lograr el dinero que necesitan, y muchos han ayudado a repartir folletos por la zona anunciando el sorteo.

En el momento de efectuar el pago, los que quieran participar deberán hacer constar su nombre y apellidos, el número de su carné de identidad y un teléfono de contacto, y guardar el justificante del ingreso que entrega la entidad bancaria, ya que será requisito indispensable para recoger el premio.

Parece que esta puede ser la salida de la crisis para algunos de los que están ahogados por ella.

Apuntes de domotica en Taringa

. domingo, 20 de diciembre de 2009
0 comentarios

Excelente pagina de Taringa donde echar un vistazo a una amplia colección de apuntes. Pincha aqui

Microsoft querellado por el uso del nombre BING

. viernes, 18 de diciembre de 2009
0 comentarios

Una pequeña compañia de nuevas tecnologías, Bing Information Desing, que lleva unos diez años en funionamiento se querella contra Micosoft alegando que con el uso de esta marca se dificulta su labor de comunicación.

El buscador Bing, que actualmente tiene una cuota de mercado del 10% en Estados Unidos y lleva en funcionamiento desde Junio encuentra aqui su primer escollo legal.

Invitame a un cafe !!!

Si te gusto este blog colabora...