blog de 043h68
Actualización automática de archivos de propiedades con Spring
Hace algunos días en el trabajo tuvimos la necesidad de que en uno de los componentes que tenemos en desarrollo el sistema de activación se implementará por medio de un archivo de propiedades.
La decisión ya estaba tomada y la mayoría construido, así que solo me quedaba investigar como hacer que la aplicación una vez desplegada en modo productivo tomará los cambios que se hicieran en un archivo de propiedades externo. La idea de obtener el contexto de Spring y hacer un .refresh nunca me gusto, aunque fue una de las primeras pruebas que hice y el resultado algunas veces termina en un reinicio de todo el contexto, fea la cosa.
Buscando por google me encontré con algunas personas que recomendaban springframework-addons de unicon, la cual tiene como objetivo que spring se enteré automáticamente de los cambios que sufran los archivos que nosotros le indiquemos, en este caso mi archivo de propiedades.
Agregando la dependencia.
No creo tener que explicar algo, solo agregamos al POM nuestra dependencia con la versión que corresponda.
Certificación SCJP 6 Objetivo 1.1
Hace mucho que surgió en mi cabeza la necesidad de tener la certificación de Java, por el momento no cuento con alguna, desgraciadamente no había tenido espacio de dar una leída al libro de Katy Sierra recomendado, pero aprovechando las circunstancias de mi actual trabajo trataré de publicar a diario un avance de los objetivos del libro con tres propósitos:
Publicaré las notas de estudio para que los interesados en realizar esta certificación sirva de refuerzo o impulso, esperando que algunos de los que ya están certificados puedan ayudar a temas que sean importantes, difíciles o se vayan escapando.
Objetivo 1.1 Declaración de interfaces
Una interfaz es un contrato (Conjunto de requisitos que deben satisfacer las clases que se ajusten a esa interfaz).
Al crear una interfaz, estamos definiendo un contrato para lo que una clase puede hacer, pero sin indicar como lo va a hacer.
Se puede pensar en una interfaz como en una clase que es 100 % abstracta.
Desarrollo inseguro, aún con un Object-Relational Mapping.
Seguro más de una vez has escuchado cuándo alguien dice orgulloso: "Mi aplicación es más segura, uso Hibernate para la persistencia de mis datos."
Si no, algún día toparás con alguien que te lo diga.
El uso de herramientas como Hibernate, que nos permiten trabajar con objetos durante nuestras sesiones de trabajo no garantiza que nuestra aplicación sea inmune. Simplemente no hay aplicaciones inmunes, pero no hay que dejar que sea trabajo fácil para el que intenta corromper nuestra seguridad.
Por defecto Hibernate utiliza sentencias de tipo Prepared Statements lo cual de primera instancia nos permitiría pensar que no debemos preocuparnos por algún SQL Injection, pero no es así, por ejemplo:
Como vemos la variable idUsuario puede contener caracteres no deseados que pueden ser interpretados de manera que generen errores o peor aún, fugas de información.
Otro ejemplo con el mismo caso :
Lista de deseos, que es lo que quiere Oracle en el JDK 8,9,10 y 11.
Les comparto la lista de deseos de Oracle que según se planea se empiecen a cumplir a partir del release de la versión 8 del JDK.
Se nota la tendencia a adoptar algunas características de algunos otros lenguajes que en este tiempo han venido ganando gran afecto entre los que gustamos y vivimos de esto que le dicen el desarrollo de software.
Cosas del Core de Java que debes saber.
Hace tiempo me hablaron de una empresa para hacerme una entrevista, y como era una empresa que si me llamo la atención empece el proceso de selección hasta que llego el tan esperado momento de: "¿Podemos concertar una entrevista para que nuestro experto te haga algunas preguntas?" La respuesta ya la conocen y cuándo termino con el cuestionario recordé que algunas de preguntas ya las conocía de tiempo atrás, las cuales no tienen desperdicio y les comparto aquí traducidas, y al final del texto dejo el link del texto "original".
¿Cuál es un objeto inmutable en Java? ¿Se puede cambiar los valores de un objeto inmutable?
Scala ahora sobre .NET
Miguel García, que forma parte del grupo de Scala de la EPFL, se ha esforzado por hacer que la productividad de Scala quede a disposición de los desarrolladores. NET también. En un proyecto financiado por Microsoft, que ha alcanzado un hito importante en la entrega de esa capacidad. En esta entrevista Miguel le dice cómo ahora se puede utilizar Scala en .Net y da una idea de cómo se ha logrado este ambicioso proyecto y la dirección futura.
¿Por qué la gente necesita en Scala. Net?
Miguel:
Hay muchas razones por qué esto es atractivo tanto para los desarrolladores y empresas en general. Scala es un lenguaje de programación conciso y altamente productivo. Mediante el uso de Scala. NET, los desarrolladores pueden producir aplicaciones más rápidamente y tienen la posibilidad de desplegar a través de las dos plataformas importantes de la industria, la JVM y .Net.
Clojure
Según la misma descripción que dan desde el sitio oficial de Clojure
" Clojure es un lenguaje de programación dinámica que se dirige a la máquina virtual de Java. Está diseñado para ser un lenguaje de propósito general, la combinación de accesibilidad y el desarrollo interactivo de un lenguaje de script con una infraestructura eficiente y robusto para la programación multiproceso. Clojure es un lenguaje compilado - que compila directamente al código de bytes de JVM, sin embargo, sigue siendo completamente dinámico. Cada función compatible con Clojure se admite en tiempo de ejecución. Clojure proporciona un fácil acceso a los marcos de Java, con notas de tipo opcional y la inferencia de tipos, para garantizar que las llamadas a Java pueden evitar la reflexión."
Aquí les dejo un buena entrada a este blog en donde le dan un recorrido a lo que es Clojure. De donde nace, como, de que se trata y por que la gente de Lisp se esta pasando a este lenguaje.
Saludos!!
Canción muy Geek
Bueno, leyendo un poco por ahí encontré un blog donde publican la entrada de una canción, sin duda la mas friki que he escuchado en mi corta vida.
Les dejo el texto por acá y también el link de descarga por si alguno quiere.
*************************************************************************************************
Hoy no me pude dormir
y me puse con el Delphi
me agarro la inspiracion
y me hice un ABM
Como lo quise hacer bien
le puse un page control
un treeview y diez edits
y un bitmap en el fondo
Coro:
Lo podes abrir y datos cargar
tirar un lookup y mandar a grabar
y mi ABM es el mejor
Valida muy bien, tambien es veloz
y si lo usas mal te tira un error
y mi ABM es el mejor
Para que ande muy bien
le puse un poco de assembler
y para no recompilar
lo meti en una DLL
Este ABM que hice
tambien es compatible
no solo usa BDE
tambien ADO y DBExpress
Coro.
Para que no tenga igual
le exporte una interface
ya es un objeto COM
y lo herede de otra clase
Tambien le redefini
sus metodos virtuales
y le agregue en published
a todas sus propiedades
Coro.
Escalabilidad y paradigmas de almacenamiento de datos
No hace muchos años que empezamos a hablar de el Cloud computing y en pensar en todos los beneficios que esto nos traería, todo mundo habla del tema y pareciera que sera todo fabuloso, aunque hay un pequeño grupo de gente que vamos a tener que pensar diferente para enfrentar estos nuevos cambios.
Paradigmas en el almacenamiento de datos.
Quería nombrarle "Nuevos Paradigmas en el almacenamiento de datos", pero la verdad es que muchos de los paradigmas que resurgen hoy en día son mas viejos que los mismos que hemos utilizado quizás desde que desarrollamos, aunque no los conozcamos O.O