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.

Invitame a un cafe !!!

Si te gusto este blog colabora...