Un año transcurrió juntos, les deseo que se cumplan todos sus anhelos. En el 2010 espero que me sigan acompañando.
Translate
jueves, 31 de diciembre de 2009
Feliz Navidad y próspero Año nuevo !!!
Un año transcurrió juntos, les deseo que se cumplan todos sus anhelos. En el 2010 espero que me sigan acompañando.
lunes, 28 de diciembre de 2009
domingo, 27 de diciembre de 2009
JavaFX Script
sábado, 19 de diciembre de 2009
RestTemplate en Spring 3
sábado, 12 de diciembre de 2009
Podcast de JavaHispano sobre pruebas automatizadas
pruebas automatizadas y me ha parecido muy recomendable.
persona de TDD (no de oidas, como hacemos muchos)
Conclusiones en primera "lectura":
* automatizar las pruebas es más rentable que no hacerlo
* los principios FIRST son fundamentales para unas buenas pruebas
* que tu código sea testeable se consigue de entrada haciendo TDD
* aprender a hacer TDD es duro, pero como cualquier otra cosa en la
vida que merece la pena (es una inversión en tu carrera
independientemente de la elección del lenguaje)
Las pérdidas de datos más increíbles del año
Gracias a una encuesta efectuada en el conjunto de sus laboratorios implantados en todo el mundo, esta lista de accidentes representa los casos más curiosos a los que ha tenido que enfrentarse en recuperación de datos y dan un pulso de los casos más sorprendentes a los que se enfrentan las compañías o las fuerzas del orden en pérdida de información.
En primera posición se encuentra el caso de un registro en un apartamento. El sospechoso había lanzado desde un 12º piso su portátil, que contenía las pruebas de su culpabilidad. No muy divertido. Tras recuperar las piezas para rehacer el PC, las fuerzas del orden contaron con el disco duro de nuevo.
Cuando no es las altas esferas, es en la profundidad del mar donde acaban los discos duros. La situación más impactante es, sin duda, un ordenador portátil que cayó en alta mar desde un barco y fue recuperado seis meses más tarde, tras estar a 60 metros bajo el agua. "El 99% de los datos fueron recuperados".
La lista también incluye discusiones entre colegas en la sala informática, con uno de los protagonistas dañando (¿accidentalmente?) el servidor. Otro caso: el de un fotógrafo profesional que, al pasar por un badén, deja caer la tarjeta de memoria de su cámara en un charco.
La situación más divertida, sin embargo, es la protagonizada por un hombre de negocios que, buscando las llaves de su coche, dejó su portátil en el capó. Una vez las llaves recuperadas, se fue dejando, como era de esperar, su ordenador donde lo había dejado. El equipo puso fin a su vida empotrándose contra un muro después de planear un rato.
El caso más enternecedor es el de un gato que tomó por objetivo el cable de conexión de un disco duro externo. A fuerza de jugar con él, consiguió que el disco se cayese perdiendo los datos grabados. El gato se salvó, por cierto, del impacto de la caída.
Para evitar estas perdidas el consejo es claro: evitar la moto, los gatos, el contacto con el agua y el planear. Y, claro está, un back up regular.
sábado, 5 de diciembre de 2009
The Spring Rich Client Project
The Spring Rich Client Project es un proyecto, que tiene como objetivo hacernos la vida más fácil cuando tenemos que desarollar aplicaciones swing.
Como nos va a cumplir el objetivo?
· Proporciona una forma de desarrollo estructurada, altamente configurable, estándares y más rápido, aprovechando spring framework.
· Fomentar la integración con proyectos rich-client-related donde esto tenga sentido.
· Adherirse a la filosofía de spring , interfaces , la importancia de diseño orientado a objetos, pruebas y documentación.
Entre las características:
· Centralización de configuración de swing actions y controlador de registro basado en la vista activa actual.
· Un form data binding y un framework de validación.
· Soporte para gestion multiples ventanas, pagina de configuración y manejo de vistas
· Clases de apoyo comunes frente a diversos requerimientos de los clientes ricos, incluyendo: diálogos bien formados, los asistentes, la validación de entrada (escribir sugerencias y resultados de la validación de informes), barras de botones, la internacionalización, la imagen / el caché de iconos, seguimiento de los avances, la interfaz de usuario Threading (clases limpiamente la promoción de interfaces sensibles),
Manual de JPA
http://www.javahispano.org/contenidos/archivo/7296830/Manualjpa.pdf
miércoles, 2 de diciembre de 2009
Dan Pink en la sorprendente ciencia de la motivación
sábado, 28 de noviembre de 2009
Spring Roo
- Se puede construir aplicaciones en 10 minutos.
- 100% programado en java, no es necesario cambiar de lenguaje.
- Eficiencia
- Implementación de las mejores prácticas de spring 3
- Basado en maven 2, jpa (hibérnate) ,
- Incluye soporte para configuración de base de datos
- Incluye test automáticos de jUnit y test web con Selenium
- Aplicación backend basada en RESTfull
- Integración con Spring security
- URL amigables, url RESTfull
- Soporte para Scripting
Spring Integration
sábado, 21 de noviembre de 2009
Inyección de dependencia
domingo, 15 de noviembre de 2009
JNA
domingo, 8 de noviembre de 2009
¿Quién necesita un arquitecto?
sábado, 7 de noviembre de 2009
Apache Solr
Solr es un servidor de búsquedas basado en Lucene, contiene Apis de comunicación xml/http y JSON. Entre otras características: es liviano, tiene cache, replicable y trae una interfaz web para administrarlo.
El modo de distribución es un war el cual nosotros deployeamos en nuestro web conteiner (jetty, tomcat o otro) y listo!
Vamos al browser y ponemos por ejemplo http://localhost:8080/solr (si lo deployearon como solr) y hay va aparecer la interfaz web para configurarlo.
Solr provee diferentes clientes para casi todas las plataformas:
· Ruby - SolRuby
· PHP - SolPHP
· Java - SolJava
· Python - SolPython
· JSON - SolJSON
· .Net - solrnet
- C#
- Perl
o SolPerl
o Solr.pm
· JavaScript
o AJAX Solr.
Dejo links:
domingo, 1 de noviembre de 2009
RESTEasy
Es un proyecto de jboss que provee una implementación a jsr 311. Este proyecto contiene un conjunto de frameworks que nos facilitan el desarrollo con web services rest.
Jsr 311 nos permite desarrollar y publicar web services rest con anotaciones, vean que fácil es:
@Path("/library")
public class Library {
@GET
@Path("/books")
public String getBooks() {...}
@GET
@Path("/book/{isbn}")
public String getBook(@PathParam("isbn") String id) {
// search my database and get a string representation and return it
}
@PUT
@Path("/book/{isbn}")
public void addBook(@PathParam("isbn") String id, @QueryParam("name") String name) {...}
@DELETE
@Path("/book/{id}")
public void removeBook(@PathParam("id") String id {...}
}
Recuerden que los web services rest no tienen un descriptor wsdl como los soap, sino que lo que describe a los servicios rest en la url y el método por donde se aceden.
@PUT, @DELETE, @GET, etc decimos el método y con @Path indicamos el path donde esta publicado.
RESTeasy puede ejecutarse sobre cualquier contenedor web.
viernes, 30 de octubre de 2009
Las 7 características del código simple
miércoles, 28 de octubre de 2009
Firebug es lo más!!
Firebug Lite es un porte de Firebug a JavaScript que da acceso a una buena parte de la funcionalidad de Firebug desde IE, Safari, Chrome y Opera. Para emplearlo basta con añadir este script a la página que queremos depurar:
<script type='text/javascript' src='http://getfirebug.com/releases/lite/1.2/firebug-lite-compressed.js'></script>
domingo, 25 de octubre de 2009
¿Qué son los DSL?
Los DSLs son lenguajes de programación especialmente diseñados para desarrollar software restringido a un dominio determinado. A diferencia de los lenguajes llamados de propósito general como Java, C++ o C#, los DSLs cuentan con un universo limitado de aplicación. No obstante, gracias precisamente a esta especialización, presentan facilidades y ventajas a la hora de abordar los problemas de software para los que fueron diseñados y desarrollados.
Java usa muchos DSL basados en xml, por ejemplo struts usa un dsl para definir el workflow de sus paginas, es mucho más fácil y flexible que hacerlo con java. Los archivos .properties tambien son un ejemplo dsl, con un universo muy limitado pero que resulta mucho más facil que hacerlo con XML o java.
Para definir e implementar lenguajes DSL es posible basarnos en un lenguaje de propósito general que sirva como contenedor, o bien partir de cero, requiriendo en este caso de específicos compiladores o intérpretes. Los DSLs del primer tipo citado suelen denominarse DSLs internos dejando la categoría de externos para los del segundo tipo.
Los Internal DSL: están escritos en el propio lenguaje padre. Son basicamente lo que siempre hemos conocido como “API” aunque utilizando “fluent interface” y atendiendo más a la semántica de los métodos. Un ejemplo en Java sería la generación de SQL por parte de Hibernate:
SQLQuery sql = new SQLQuery();
sql.Select("Id").Select("FirstName").Select("LastName").From("Person").Where("Id = 1").Where("FirstName = 'Chris'").OrderBy("LastName").OrderBy("FirstName");
string strSqlString = sql.ToString();
Los External DSL: No están escritos en el mismo Java. Se utiliza un lenguaje externo. En el caso de Java han triunfado especialmente los External DSL escritos en XML. Un caso sería el MVC de Struts, que se declara así:
<action-mappings >
<action path="/listar" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="listar" path="lista.aplicaciones"/>
</action>
<action path="/formularioNuevaAplicacion" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="mostrar" path="nueva.aplicacion"/>
</action>
<action path="/nuevaAyuda" attribute="aplicacionForm" name="aplicacionForm" type="org.springframework.web.struts.DelegatingActionProxy" scope="request" input="nueva.aplicacion">
<forward name="nueva" path="/listar.do"/>
</action>
</action-mappings>
Usamos DSL todo el tiempo y ni sabia :|
sábado, 24 de octubre de 2009
Groovy
def name='World'; println "Hello $name!"
Un "hola mundo" más complicado:
import static org.apache.commons.lang.WordUtils.*
class Greeter {
Greeter(who) { name = capitalize(who) }
def salute() { println "Hello $name!" }
}
new Greeter('world').salute()
Los problemas evolucionan por lo tanto las soluciones también deben evolucionar. La evolución natural de java es Groovy!