lunes, 28 de enero de 2013

La programación Funcional puede causar problemas en Java?

La programación Funcional puede causar problemas en la plataforma Java? Es bueno utilizar Programación Funcional en la plataforma Java? es eficiente?

Un filosofo dijo una vez un lenguaje es bueno en cuanto podamos resolver problemas de la mejor manera, como el conjunto de problemas es grande, son muchos los lenguajes buenos para resolver diferentes problemas. Entre ellos de encuentran los lenguajes funcionales, los cuales son muy buenos para resolver algunos problemas. Pero esta bien incluir lenguajes funcionales en una plataforma que no fue  concebida para soportarlos?

En el siguiente link se encuentra un post que puede ser de gran ayuda para aclarar este tema:
http://java.dzone.com/articles/functional-programming-java-%E2%80%93

sábado, 26 de enero de 2013

Corre Linux Corre




El libro "Corre Linux Corre" es un proyecto desarrollado para la comunidad del software libre, dirigido especialmente a los usuarios de la distribución Ubuntu (Gnu Linux).

Este es un libro NO oficial. Se reconocen las licencias de las aplicaciones, que la marca Linux esta registrada por Linus Torvalds y la marca Ubuntu por la empresa Canonical.





Dejo link:
http://dl.dropbox.com/u/1084633/Corre%20Linux%20Corre%20Cap%C3%ADtulo%201.pdf


RIA con Lienzo y Flash4j



Emitrom es una compañía que ha tomado la iniciativa de trabajar con productos open source y sobre la capa de presentación. En este post quiero mencionar a Lienzo y Flash4j.

Lienzo es una librería GWT que permite dibujar en HTML 5 con el Canvas. Con Lienzo podemos generar animaciones, juegos, proceso de imágenes, etc. También podemos utilizar drag and drop,  transformaciones, rotación, escalar, filtrar y renderizar imágenes,  etc.  Lienzo fue liberado con licencia Apache 2.

Desarrollo en Flash se asocia típicamente con ActionScript, un lenguaje de scripting que podría ser  dificultoso para desarrolladores  Java que no están acostumbrados a lenguajes de script (una barrera similar a veces es JavaScript). Flash4j ofrece a cambio una completo; la API que provee Flash4j es totalmente Java y además es similar a la encontrada en Swing, GWT o Wicket. Flash4j ofrece integración con Apache Flex y Adobe Air. Flash4j también fue liberado con licencia Apache 2.

Dejo links:
http://emitrom.com/lienzo
http://emitrom.com/flex4j


viernes, 25 de enero de 2013

Groovy 2.1.0 Released!



Una buena noticias para todos tenemos un nuevo release de Groovy. Entre las características encontramos que ahora utiliza Dynamic Invoke que lo que permite es mejorar la performance cuando usamos clousers.   

También tenemos la anotación @DelegatesTo que permite el chequeo estático de tipos pensado para  DSLs. Además contamos con meta-anotaciones que nos permiten agrupar anotaciones. 

Muy buena noticia!!



miércoles, 16 de enero de 2013

Spring Framework 4.0


Del blog de spring framework al mundo, se anuncia Spring Framework 4.

Como explica en el blog, con Spring 3 se puede configurar todo spring con Java y se mejoro el desarrollo REST con lo que se centraron en Java 7 y Servlet 3.0

Ahora Spring 4 se va a centrar en cuestiones del desarrollo empresarial, lo que se espera de Spring 4 es:
  • Soporte para Java 8
  • Configuración e implementación de aplicaciones Spring con Groovy 2
  • Soporte para las tecnologías Java EE 7
  • Soporte para JSR-356 (aplicaciones con arquitectura basadas en WebSocket)
  • Actualización de dependencias. 
  • Mensajería dentro de nuestra aplicación. 
Todavía no probé a fondo Spring 3 y ya esta llegando el 4! 

Dejo link:
http://blog.springsource.org/2013/01/16/next-stop-spring-framework-4-0/


martes, 15 de enero de 2013

Mi nuevo Linux!!



Acabo de instalar Linux Mint 14 (Nadia) con interfaz cinnamon. Mi primera impresión fue buena se instalo todo muy rápido y no tuve problemas con restaurar mi perfil, archivos y otras cosas.  Mi segunda impresión no fue tan buena, con cinnamon no nos llevamos del todo bien. Tuvo un error feo  y se colgó. Luego hizo cosas extrañas, por ejemplo el menú por ahí es como que se borran items y luego vuelven. Como que me dio la impresión que no esta 100% estable. Pero bue, ya instale este y si veo que tiene más errores me vuelvo a mate.

A alguien le pasa esto? como lo puedo solucionar?

De igual forma estoy contento con mi nuevo Linux!!

lunes, 14 de enero de 2013

La resurrección de Qt


Qt es el corazón del entorno de escritorio KDE; Qt tuvo mucha mala suerte comercialmente. Pero técnicamente fue creciendo; la gente la creía muerta pero Qt nunca murió y ha estado muy presente en muchas de las aplicaciones que usamos normalmente como Skype, Google Earth, VLC…

Qt nos trae una nueva versión que tienen muchas novedades. Tenemos un aumento del rendimiento y un mejor aprovechamiento del hardware, soporte para C++ 11, HTML5 a través de QtWebKit 2, un aumento en el número de APIs que ayudarán al desarrollo, retrocompatibilidad con Qt 4 y sobre todo una fácil portabilidad entre plataformas.

Qt es una gran Api con una gran potencia, esperemos que el mercado retome su uso, y Qt vuelva con todo!!

Dejo un vídeo:




Dejo link: 



Oracle NoSQL Database



Oracle para ofrecer servicios relacionados a Big Data, ve un punto estratégico NoSQL. Por lo tanto creo un producto NoSQL el cual ya hablamos en este blog. Siempre hay que estar atento a los movimientos de esta empresa que algo sabe de datos.


Hace muy poco anuncio una nueva versión Oracle NoSQL 2.0, y se puede descargar 2 versiones una community (con licencia AGPL)  y otra enterprise (licencia comercial y soporte técnico).


Esta versión llega con una mayor integración con Oracle Database y la plataforma Hadoop, hasta tal punto que es posible gestionar estos entornos desde la misma pila de recursos de TI.

De entre las novedades destacables se encuentra la alta escalabilidad y la baja latencia para dar respuesta en tiempo real a las cargas de trabajo que se producen con los grandes volúmenes de información. Así, se mejoran las transacciones con grandes objetos no estructurados como documentos e imágenes, de tal forma que se puedan mover por los distintos recursos de almacenamiento disponibles en función de las necesidades concretas.


Es claro donde van todas las empresas, todos quiere posicionarse en el mercado de Big Data y vender servicios en la nube y Oracle no es la excepción.

Dejo link:
http://www.oracle.com/technetwork/products/nosqldb/overview/index.html

Nace Miríada X, una plataforma gratuita para cursos en Español



Se acuerdan de coursera, Miríada X es muy similar pero todos los cursos son en español. Su pagina dice lo siguiente:

"Miríada X ofrece una plataforma a los docentes o equipos docentes de cualquiera de las universidades iberoamericanas que conforman la Red Universia en la que poder crear e impartir Cursos Online Masivos en Abierto (más conocidos como MOOC's), accesibles para todo el mundo de manera gratuita."

Es una gran idea!!

Dejo link:
http://www.miriadax.net/


viernes, 11 de enero de 2013

Griffon 1.2.0 released!


Griffon es un framework similar a Grails pero en vez de ser una interfaz web, es una interfaz de ventana. Es decir utiliza Swing Application Framework (JSR 296); ahora soporta SWT y JavaFx. Al igual que Grails utiliza Groovy como lenguaje.

La Noticia es que se viene una nuevo release con importantes novedades. El framework me parece una gran idea, es el primero que conozco de este tipo. Esperemos que siga creciendo.

Dejo link:
http://docs.codehaus.org/pages/viewpage.action?pageId=230396594
http://griffon.codehaus.org/

jueves, 10 de enero de 2013

Software libre para una sociedad libre


Richard Stallman es el creador del sistema GNU y la GPL, pilares básicos del Software libre. En 2002, GNU Press publica la primera edición de su libro: Free Software, Free Society: Selected Essasys of Richard M. Stallman.

En el libro, Stallman intenta hacernos comprender como los fabricantes de software y sus prácticas monopólicas están retrasando la evolución de la informática.

El libro esta en español.

Dejo link:
http://www.gnu.org/philosophy/fsfs/free_software.es.pdf

El blog recomendado de la semana: Softwarez Live



Softwarez Live es un blog para los que empezamos en python, tiene vídeo tutoriales y muy buena info espero que crezca.

Dejo link: http://softwarezlive.blogspot.com.ar/

Strings y GString, Tratando cadenas con Groovy


Dado el ultimo post y que me gusta comparar lenguajes, veamos como Groovy trata los Strings. 


Groovy permite el uso de " y de ' similar a javascript. De esta forma podemos usar uno o el otro según nos convenga; por ejemplo:


"Hola me llamo: 'Pepe'" o 'Hola me llamo: "Pepe"'


Groovy permite concatenar strings con el + :



a = "world"
print "hello " + a + "\n"

""" permite tener string multilinea por ejemplo:



def text = """\
Hola Pepe!
Como estas?
"""

Es posible utilizar notación para literales de cadena que tienen otras ventajas como por ejemplo no se necesita barras invertidas adicionales para escapar caracteres especiales. Esto es especialmente útil con expresiones regulares o nombres de archivos de Windows.



def s = /.*foo.*/
def dirname  = /^.*\//
def basename = /[Strings and GString^\/]+$/

GString permite interpolación de cadenas similar a Velosity, JExl o JSP EL.  



foxtype = 'quick'
foxcolor = ['b', 'r', 'o', 'w', 'n']
println "The $foxtype ${foxcolor.join()} fox"

Internamente lo que pasa es que si una cadena contiene un ${...}  el compilador se da cuenta y instancia GString. GString trabaja la interpolación como lazy evaluation; lo que permite muchísimo. 


println new Date()



x = "It is currently ${ new Date() }"
assert x.values[0] instanceof Date
y = "It is currently ${ writer -> writer << new Date() }"
assert y.values[0] instanceof Closure
sleep 5000
println x
println y

GString también le permite usar clusures de la siguiente forma:


def deepest = {-> "deepest"}
def deep = {-> "deeper and $deepest"}
println "how deep is deep? $deep"

// which is equivalent to:

println "how deep is deep? ${{-> "deeper and ${{-> "deepest"}}"}}" // for demonstrating it is a nested usage only



Otro lenguaje y otra forma de hacer las cosas. Groovy permite manejar Strings fácilmente. 


Dejo Link: 

http://groovy.codehaus.org/Strings+and+GString




String Interpolation en Scala 2.10


Como vimos en un post anterior Scala libero la versión 2.10 con importantes novedades, entre ellas String Interpolation o Interpolación de cadenas. Lo que permite esta técnica es llamar  variables directamente desde el string, sin tener la necesidad de concatenar strings. Veamos un ejemplo:

val name = "Pepe"
println(s"Hola $name")  // Hola Pepe

Podemos ver que en el ejemplo se utilizo "s" este prefijo nos permite el uso de variables de manera directa dentro de la propia cadena. s nos permite utilizar cualquier variable que este en el contexto y también expresiones:

println(s"1 + 1 = ${1 + 1}")

"f" permite formatear una cadena muy similar al printf de otros lenguajes como C++, veamos un ejemplo:

val height = 1.9d
val name = "Pepe"
println(f"$name%s is $height%2.2f meters")  // Pepe is 1.90 meters

Ojo f es type-safe; lo que significa que si utilizamos una manera de formatear números y la variable es string; va a lanzar una excepción.

raw se diferencia de s dado que escapa caracteres especiales. Veamos un ejemplo:

scala> s"a\nb"
res0: String =
a
b

Pero con raw sería:

scala> raw"a\nb"
res1: String = a\nb

La interpolación de cadenas no funciona con sentencias “pattern matching”. Esta funcionalidad está planificada para su inclusión en la versión 2.11 de Scala.

Un gran avance, Scala sigue creciendo!!

Dejo link:
http://docs.scala-lang.org/es/overviews/core/string-interpolation.html



miércoles, 9 de enero de 2013

Se Libre...Se Linux

Un poco de publicidad ...



Más allá del vídeo y la cuestión marketinera, Linux es un sistema operativo que logra que lo quieran y tener gente que con ese amor y pasión lo construye.

Desarrollo dirigido por pruebas en Python

Quiero invitarlos a ver el siguiente tutorial, que nos explica TDD en phyton

Dejo el link:
http://pybonacci.wordpress.com/2013/01/07/desarrollo-dirigido-por-pruebas-en-python-i-una-historia-que-pasa-todos-los-dias/

domingo, 6 de enero de 2013

Scala 2.10.0 fue liberado!!


Scala 2.10 ha sido lanzado oficialmente incluyendo muchas nuevas características. Incluyendo nuevas características. Entre ellas se puede nombrar, interpolación de strings, actores de Akka ahora son parte del lenguaje.

Dejo el link:
http://www.scala-lang.org/node/27499

Ceylon IDE


Ceylon IDE es un plugin de eclipse que nos facilita programar en Ceylon, entre las características podemos nombrar:

Una perspectiva con Ceylon Explorer view


  • Compilación incremental y reporte de errores interactivo
  • Inter-compilación con Java
  • Compilación con Javascript
  • Ejecutar o Depurar tanto con la JVM como con Node.js
  • Resaltado de sintaxis personalizable
  • Jerarquía de tipos de ventanas emergentes
  • Reporte de / / todo y / fix / en vista Tareas y anotaciones de tareas

Y mucho más!

Dejo un video:



Dejo link:
http://ceylon-lang.org/documentation/current/ide/

sábado, 5 de enero de 2013

Spring Scala, Facilitando el uso de Spring en Scala


El objetivo de Spring Scala es facilitar el uso de Spring framework en proyectos Scala. Como sabrán la adopción de Scala está creciendo cada vez más; pero los que venimos del mundo Spring; no podemos utilizar el conocimiento que tenemos? Claro que si, podemos utilizar Scala con Spring. Hoy podemos utilizar Spring en proyectos Scala sin utilizar Spring Scala pero al igual que cualquier lenguaje Scala tiene su propia forma de hacer las cosas y si usamos Spring haremos las cosas muy al estilo Java. Por lo tanto el proyecto Spring Scala arregla esto.


Que provee Spring Scala?
  • Facilidad para utilizar inyección de dependencia
  • Configuración de beans de forma funcional
  • Utilizar Template de Spring a la manera de Scala

Si quieren utilizarlo utilizando maven deben agregar el siguiente repositorio y la dependencia:



    
        milestone.repo.springsource.org
        repo.springsource.org-milestone
        https://repo.springsource.org/libs-milestone
    


    org.springframework.scala
    spring-scala
    1.0.0.M1


Spring Scala está en progreso por lo tanto se esperan muchos cambios y puede tener algunos bugs.

Dejo links:
http://blog.springsource.org/2012/12/10/introducing-spring-scala/

viernes, 4 de enero de 2013

Crypt4you – Aprende criptografía y seguridad informática gratis!!


Criptografía (del griego κρύπτω krypto, «oculto», y γράφως graphos, «escribir», literalmente «escritura oculta») tradicionalmente se ha definido como la parte de la criptología que se ocupa de las técnicas, bien sea aplicadas al arte o la ciencia, que alteran las representaciones lingüísticas de mensajes, mediante técnicas de cifrado y/o codificado, para hacerlos ininteligibles a intrusos (lectores no autorizados) que intercepten esos mensajes. Por tanto el único objetivo de la criptografía era conseguir la confidencialidad de los mensajes. Para ello se diseñaban sistemas de cifrado y códigos. En esos tiempos la única criptografía que había era la llamada criptografía clásica.

Que sería mi vida sin la wikipedia!! Todo estos conceptos y conceptos de seguridad informática los podes encontrar en  Crypt4you y de forma gratuita.

Dejo el link:
http://www.dragonjar.org/crypt4you-aprende-criptografia-y-seguridad-informatica-de-otra-forma-y-gratis.xhtml?utm_source=anonymous&utm_medium=twitter&utm_campaign=Feed%3A+dragonjar%2FpKru+%28La+Comunidad+DragonJAR%29

jueves, 3 de enero de 2013

Tutorial de Node.js


Quiero compartir el siguiente tutorial para iniciar en Node.js; según la pagina:

"El objetivo de este documento es ayudarte a empezar con el desarrollo de aplicaciones para Node.js, enseñándote todo lo que necesites saber acerca de JavaScript "avanzado" sobre la marcha. Este tutorial va mucho más allá del típico manual "Hola Mundo"."

Dejo el link:
http://www.nodebeginner.org/index-es.html

miércoles, 2 de enero de 2013

Ubuntu Phone, linux se viene con todo!!

Creo que la noticia ya no es tan novedosa, pero no quiero dejar de ser eco de este gran acontecimiento, Ubuntu lanzo su versión mobile. Y porque esto es tan bueno? Porque diversifica el mercado y es otro linux para nuestras tables y celulares. Recordemos que linux es el rey del mercado mobile, con el indiscutido rey Android; pero también existen otros sistemas como Firefox OS, Open WebOS, Sailfish, Tizen, Meego y ahora Ubuntu.

Si bien no hablaron de algún proveedor que proporcione Ubuntu preinstalado, creo que va a ver opciones. También creo que es la hora de como usuarios pedir a las empresas más opciones.

Recuerdan que cuando ubuntu empezo a triunfar empezaron a proliferar las distros basadas en él. Pasara lo mismo con Ubuntu Phone? Se viene Linux Mint Phone?

Dejo un video:



Dejo links:
http://www.ieco.clarin.com/tecnologia/Anuncian-lanzamiento-software-Ubuntu-celulares_0_839916212.html

Encapsular lo que varia




Termine el libro de Patrones de Erich Gamma. La verdad muy bueno, me intereso mucho como muestra los patrones desde un lenguaje dinamicamente tipado como SmallTalk y desde otro estaticamente tipado como C++. Les dejo unos párrafos que me gustaron, que tratan de describir la mayoría de los patrones de comportamiento:

Encapsular aquello que puede variar es el tema de muchos patrones de comportamiento. Cuando un determinado aspecto de un programa cambia con frecuencia, estos patrones definen un objeto que encapsula de dicho aspecto. De esta manera, otras partes del programa pueden colaborar con el objeto siempre que dependan de ese aspecto. Los patrones normalmente definen una clase abstracta que describe el objeto encapsulado, y el patrón toma su nombre de ese objeto. Por ejemplo:

  • Estrategia: encapsula un algoritmo.
  • Estado: encapsula un comportamiento dependiente del estado.
  • Mediador: encapsula el protocolo entre objetos.
  • Iterador: encapsula el modo de acceder y recorrer una colección. 

Estos patrones describen aspectos de un programa que probablemente cambien. La mayoría de los patrones tienen dos tipos de objetos: el nuevo objeto que encapsula y el objeto existente que usa un nuevo objeto creado. Normalmente si no fuera por el patrón, la funcionalidad de los nuevos objetos seria una parte integral de los existentes. Por ejemplo, el código de una Estrategia probablemente estaría ligado al contexto de la estrategia, y el código de un Estado se encontraría implementado directamente en el contexto del estado.

Pero no todos los patrones de comportamiento de objeto dividen así la funcionalidad. Por ejemplo, el patrón Chain of Responsibility trata con un numero indeterminado de objetos, cada uno de los cuales puede que ya exista en el sistema

El patrón Chain of Responsibility muestra otra diferencia entre los patrones de comportamiento: no todos definen relaciones de comunicación estática entre las clases. El patrón Chain of Responsibility describe el modo de comunicación entre un numero indefinido de objetos. Otros patrones usan objetos que se pasan como parámetros.

Como conclusión solo les puedo recomendar que lean "Patrones de Diseño" de Erich Gamma.