sábado, 11 de febrero de 2012

Ebooks y tutoriales gratis de Java.

Sabemos que la mejor manera de aprender algo, es leer un buen libro, aunque aveces necesitamos algún ejemplo rápido y lo buscamos en foros, blogs y demás. 

Si eres de los que esta buscando la opción del libro, puede que alguno de estos te sirva:

Thinking in Java, 3rd Edition.



Descargar

Excelente libro, con ejemplos incluidos.
Autor : Bruce Eckel

Introduction to Programming Using Java 6th. Edition.



Este libro se dirige principalmente a los programadores principiantes, aunque también podría ser útil para los programadores experimentados que quieren aprender algo de Java. Ciertamente no es la intención de proporcionar una cobertura completa del lenguaje Java.
Autor: David J. Eck

The Java Language Specification, Third Edition.



Es la referencia técnica definitiva para el lenguaje de programación Java. Si quieres saber el significado preciso de las construcciones del lenguaje, esta es la fuente para usted.
El libro ofrece una cobertura completa, exacta y detallada del lenguaje de programación Java. 
Autores: Los inventores de esta tecnología

The Java Tutorial 4th Edition.



Los tutoriales de Java son guías prácticas para los programadores que deseen utilizar el lenguaje de programación Java para crear aplicaciones. Ellos incluyen a cientos de completos,ejemplos de trabajo, y decenas de lecciones.
Autores: Sharon Zakhour, Scott Hommel, Jacob Royal, Isaac Rabinovitch, Tom Risser, Mark Hoeber

Blue Pelican Java.



Es un libro de ciencias de la computación un tanto inusual. La mayoría de los textos de ciencias de la computación se iniciará con una sección sobre la historia de las computadoras y sigue con una serie de definiciones que son sólo "muchas palabras" para el estudiante promedio. El enfoque aquí es dar primero al estudiante un poco de experiencia para manejar las definiciones que vienen después. La práctica habitual de la introducción de clases y objetos se difiere hasta que el estudiante tiene una sólida comprensión de los fundamentos (bucles, estructuras de decisión, etc.) De este modo, el estudiante que comienza, no se siente abrumado por la introducción simultánea de los conceptos de Programación Orientada a Objetos y sus fundamentos. El libro incluye un montón de ejercicios, proyectos y un apéndice enorme.
Autor : Charles E. Cook

Core Servlets and JavaServer Pages, Second Edition.



Una visión genera de Servlets y de la tecnología JSP.
Autores: Marty Hall y Larry Brown


How to Think Like a Computer Scientist.




Descargar

Es una introducción a la programación en Java para los principiantes. Es apto para cualquier persona que quiera aprender Java.
Autor: Allen B. Downey

lunes, 14 de noviembre de 2011

Códigos QR: Android

Este tipo de código de barras fue creado con la finalidad de poder hacer una lectura con mayor rapidez, de ahí su nombre (Quick Response). Son fácil de reconocer ya que tiene un cuadrado en tres de las esquinas que permite saber en que posición debe leer.

Si tienes un dispositivo con Android probablemente te has encontrado con este tipo de códigos cuando has buscado alguna aplicación y no vez algún link de descarga, pero resulta que el link si esta, solo que codificado en QR. Para poder descargarlo desde tu dispositivo, se tiene que instalar algún lector de códigos que entienda QR, tal como Barcode Sacanner

En el siguiente video puedes ver su uso.


Y si quieres crear tus propios QR Barcode, puedes visitar este sitio.

martes, 11 de octubre de 2011

Tomcat: Problemas con UTF-8, (RequestDumperValve)

En el trabajo hemos tenido un gran dolor de cabeza con la codificación de caracteres, nuestro middleware estaba teniendo problemas con acentos, diéresis y "eñes", y por este motivo las respuestas a las peticiones de los web services se tornaron un desastre.

Todo inicio cuando tratamos de mudarnos a un ambiente de desarrollo con alta disponibilidad, ya que en el ambiente anterior funcionaba correctamente, tratamos por todos los medios posibles para corregir el problema, intentamos con:
  • Agregar URIEncoding="UTF-8" y useBodyEncodingForURI="true" a la configuración del server.xml
  • Agregar el encoding a las opciones de catalina: export CATALINA_OPTS= Dfile.encoding="UTF-8"
  • Agregar también el encoding en las opciones de java: export JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding="UTF-8"
  • Agregar las locale al usuario que ejecuta el proceso tomcat
Y nada parecía funcionar, hasta que por fin @NataS encontró algo que finalmente nos ayudo a resolver nuestro problemita que nos había consumido muchas horas.

Pues resulta que en las configuraciones nuevas de nuestros servidores estaba habilitada la opción RequestDumperValve en el server.xml, y que hace ese tal RequestDumperValve?, desde la documentación de tomcat:

"The Request Dumper Valve is a useful tool in debugging interactions with a client application (or browser) that is sending HTTP requests to your Tomcat-based server. When configured, it causes details about each request processed by its associated Engine, Host, or Context to be logged according to the logging configuration for that container.

WARNING: Using this valve has side-effects. The output from this valve includes any parameters included with the request. The parameters will be decoded using the default platform encoding. Any subsequent calls to request.setCharacterEncoding() within the web application will have no effect. NOTE: Since all parameters are included in the output, the InputStream is consumed for requests made with the method POST and content-type application/x-www-form-urlencoded."

Fuente.

En palabras de Endre Stølsvik:

“Enabling the RequestDumperValve in both 5.5.12 and 5.0.16 (!) messes up the parsing of other-than-ISO-8859-1 incoming parameters.
After using a rather huge bunch of hours, this came down as the result: when this “debug valve” is turned on, it seems to default to ISO-8859-1 when it parses and log-outputs the incoming parameters, thus also implicitly setting the entire Request-object to this enc, so any subsequnt setting to UTF-8 doesn’t matter at all. At least this is true for POST parameters.
For GET parameters, the situation is a little different. Here an explicit setting of URIEncoding to UTF-8 seems to work as it should, while useBodyEncodingForURI doesn’t – it picks up the wrong already implicitly set encoding. (For 5.0.16 I can’t seem to get the latter version to work, and have to use the explicit setting.)
Sorry if my analysis doesn’t hold water, but at least the bug seems to be very consistent.”



Y al parecer nos es especifico de estas versiones, también sucede en la versión 6.  Para la versión 7 esta válvula se llama RequestDumperFilter

Entonces tal como se expresa en estas citas, tener activado RequestDumperValve puede tener efectos colaterales, ya que se puede parsear a otra codificación todos los parámetros, y además que, posterior a esto no importa cualquier otra configuración que sea agregada, ya que no será respetada, al menos para las peticiones POST (cuyo método usamos para todas nuestras peticiones).

Tal como dijó rolfje:

Si tienes problemas raros con UTF-8 y Tomcat, busca en tu archivo server.xml una linea parecida a:

<Valve className="org.apache.catalina.valves.RequestDumperValve">

comentala, reinicia tu servidor de aplicaciones y vuelve a intentarlo. Puede que con eso, tus problemas también sean resueltos.