jueves, 28 de abril de 2016

AragonDB, una base multimodelo


Luego de auge de las bases NoSQL es extraño que hablemos, y mucho menos que hable de una base de datos NoSQL nueva. Las bases de datos ya se acomodaron en su lugar y se tiene claro que lugar ocupa cada una.

Así que este post se parece a los post OPADNoSQL (otro post aburrido de NoSQL) pero esto no es así. No no, les quiero presentar a AragonDB que es una base de datos NoSQL multimodelo. Es decir te ofrece varios mundos, con un modelo adaptable a varias realidades.

Aragon es una base de datos libre y de código abierto. Esta esta conformada por modelo de datos flexible que puede ser visto como una base documental o orientada a grafos o clave-valor.

ArangoDB es una "base de datos documental"; que básicamente proporciona acceso a los documentos que se almacenan en colecciones. En NoSQL no hay necesidad de definir un esquema de antemano. Los documentos en ArangoDB se identifican por una única clave, lo que permite el almacenamiento de clave / valor. Pueden ser conectados, lo que le permite tratar y consultarlos en forma de grafos. Por lo tanto, se puede elegir el modelo que mejor se adapte a sus necesidades o combinar los modelos de una manera conveniente.

Además ofrece una Api de consulta extensible basado en javascript. Como es tradición ofrece un lenguaje de consulta llamado ArangoDB Query Language

Y todo open source y de acceso gratuito. Que más queres?

Dejo link: https://www.arangodb.com

miércoles, 27 de abril de 2016

Ahora paseo por Ubuntu Gnome 16

Con Gnome tengo un problemita, nunca me gusto del todo gnome 3 y creo que el triunfo de distros como Mint, solusOs, elementaryOs son un claro reflejo de que no soy el único.

Por lo tanto empece a probar con un tanto de escepticismo pero al poco tiempo cambio un poco mi visión. Tema principal, ningún error, es decir corre sobre Ubuntu 16 y esta estable, cosa que no me paso con Ubuntu con Unity.

Gnome shell es un poco duro para las personalizaciones pero me encontré con muchas extensiones que me permitieron darle un toque personal. La gente de gnome a pensado las cosas para ocultar la potencia de su escritorio para darle una seguridad al usuario novato.

Sin más dejo unos screenshots:







Dejo link: https://extensions.gnome.org/

domingo, 24 de abril de 2016

Me di una vuelta por Ubuntu 16

Como ya lo dije ando buscando distro y la salida de Ubuntu 16, me vino al pelo. Entonces decidí probarlo.

Pero la verdad es que me sentí un tanto desilusionado, tiene varios errores. Por lo menos lo rompí con solo configurar el menú.

Salvo este detalle, la versión esta buena. Trae novedades muy buenas como un nuevo sistema de archivos o mejoras en la interfaz.









Acá pueden ver que desapareció el menú para nunca más volver:

 

jueves, 21 de abril de 2016

miércoles, 20 de abril de 2016

Haciendo un primer programa con Machine Learning Recipes

Quiero compartir este vídeo en el cual se hace un primer programa, usando Machine Learning Recipes.

En este vídeo se hace uso de un framework de google llamado TensorFlow (que ya hablamos ) y Python.


viernes, 15 de abril de 2016

Classic Programming Paintings

Como me reí con este sitio, muy buena idea!

Por ejemplo:



“C++ developers aiding a comrade facing SEGFAULT”
1890 - Frederic Remington(collaboration from Gary Dusbabek)
“C++ developers aiding a comrade facing SEGFAULT”
1890 - Frederic Remington
(collaboration from Gary Dusbabek)

“Serverless Architecture” Joaquín Torres-GarcíaOil on canvas, ca 1943Uruguayan Masters collection(collaboration from @alvrod )
“Serverless Architecture” 
Joaquín Torres-García
Oil on canvas, ca 1943
Uruguayan Masters collection
(collaboration from @alvrod )

“Programmers at work maintaining a Ruby on Rails application" Eero Järnefelt, Oil on canvas, 1893(Collaboration from Jaakko Koskenkorva)
“Programmers at work maintaining a Ruby on Rails application"

Eero Järnefelt, 
Oil on canvas, 1893
(Collaboration from Jaakko Koskenkorva)

Dejo el link:
http://classicprogrammerpaintings.tumblr.com/?soc_src=mail&soc_trk=ma



miércoles, 13 de abril de 2016

Probando Ubuntu 15.10

Tengo que formatear la Pc y quiero una distro fácil y basada en Debian, pensé en Mint pero lo use muchos años y tengo ganas de cambiar. Entonces me puse a probar la ultima versión de Ubuntu.

 A simple vista 15.10 no trae grandes cambios, sigue siendo el querido ubuntu, solo unas pequeñas mejoras. Una excelente distro.

Lo malo es que unity, que siguen sin conversenrme.






Que otra distro puedo probar?

domingo, 10 de abril de 2016

Con nosotros Android Studio 2.0


Android Studio 2.0 ha sido lanzado en su versión final. Y que hay de nuevo viejo? Bueno, nuevas herramientas para la emulación, una nueva característica para las builds llamada “Instant Run”, integración Cloud Test Lab y muchas más...

Instant Run es la mejor novedad de todas las que se añaden a Android Studio y que permitirá que se puedan crear builds en un tiempo menor. Esta característica lo que permite es que los desarrolladores vean los cambios hechos en el código de sus apps de forma simultánea, incluso cuando esté ya lista en un dispositivo o en el emulador.

También Google ha actualizado el emulador con una nueva interfaz, controles de sensor y suporte a gestos multi-touch. Posee incluso una opción de arrastra y sueltar para las APKs y así sea más fácil la instalación.

Otra característica muy buena son la integración Cloud Test Lab, que permite probar la app en un gran rando de dispositivos; una nueva indexación, que ayuda a promocionar la visibilidad de la app en la Búsqueda de Google con URLs auto-generadas; un GPU Debugger Preview si se desarrolla bajo OpenGL ES; y una actualización a IntelliJ 15.

Uff, solo falta que programe...

Dejo link:
http://tools.android.com/download/studio/builds/2-0-preview

Eclipse OMR


IBM ha creado Eclipse OMR, un conjunto de herramientas de código abierto para máquina virtual java con el objetivo de crear entornos de ejecución para cualquier lenguaje. OMR pretende potenciar nuevos lenguajes en la jvm. Para lograr esto, IBM está generalizando su propia JVM, J9.

Aunque la JVM es cada vez más más políglota, su estrecha relación con el lenguaje Java significa que los lenguajes que corren en ella tiene que estar ligados a java. Esto causa problemas especialmente a los lenguajes de tipado dinámico, por ejemplo hasta la adición de InvokeDynamic en Java 7, lenguajes dinámicos tuvieron que hacer uso de soluciones ineficientes para superar la naturaleza de tipo estático de la JVM, que repercute notablemente en el rendimiento.

Aunque OMR no es un motor de ejecución en sí mismo, es un conjunto de herramientas para crear fácilmente los runtimes. OMR proporciona una implementación de JVM independiente de las características de Java y proporcionando las características más comunes de los runtimes.

Este proyecto esta en incubadora pero se espera un gran futuro. Otra cosa es opensource y con licencia eclipse 1 y apache 2.

Dejo link: https://projects.eclipse.org/proposals/omr

jueves, 7 de abril de 2016

Oracle Technology Network

Me llego este mail y quiero compartirlo con ustedes, al parecer tenemos videos para estudiar en castellano y gratuitos:

Ver este mensaje en un navegador Web
Oracle Corporation
Nueva Cumbre Virtual de Tecnología OTN gratuita en español
Súmese a esta experiencia de aprendizaje práctico gratuito con Oracle y expertos de la comunidad

Estimado/a Emanuel Goette,

Oracle Technology Network lo invita a participar en la nueva Cumbre de Tecnología Virtual. Escuche a los participantes de los programas ACE y Java Champion de Oracle, y a los expertos en productos Oracle, quienes compartirán sus reflexiones y conocimientos en laboratorios prácticos, presentaciones de alto contenido técnico y demostraciones.

Obtenga conocimientos en su propio idioma; sesiones de video en español.

El evento online ofrece cuatro módulos técnicos, cada uno enfocado en herramientas, tecnologías, prácticas recomendadas y sugerencias específicas:

Base de datos: El módulo sobre bases de datos ofrece las últimas actualizaciones para administradores de bases de datos y desarrolladores de Oracle. Se trabajará en profundidad sobre las opciones avanzadas de Oracle Database 12c, y el desarrollo de aplicaciones de nueva generación con JSON, Node.JS y la nube de Oracle Database.Middleware: El módulo sobre middleware está pensado para desarrolladores que deseen adquirir nuevas competencias en áreas tecnológicas emergentes como la Internet de las cosas (IoT), las aplicaciones móviles y los servicios PaaS.

En este módulo también se ofrecerán las últimas actualizaciones sobre Oracle WebLogic 12.2.1.
Java : En este módulo, le mostraremos mejoras incorporadas en la plataforma y las API de Java. También se enterará de cómo desarrollar aplicaciones innovadoras con el lenguaje Java empleando microservicios, programación concurrente, e integración con otros lenguajes y herramientas, y obtendrá conocimientos sobre las API que aumentarán considerablemente su productividad.Sistemas: El módulo sobre sistemas, diseñado para administradores, abordará las prácticas recomendadas para implementar, optimizar y proteger los sistemas operativos, las herramientas de gestión y el hardware. Esta cumbre VTS girará en torno de los sistemas operativos y la virtualización, así como de las prácticas recomendadas en materia de almacenamiento y desarrollo de software.


¡Mire los videos en español hoy mismo!
Integrated Cloud Applications and Platform Services
Copyright © 2016, Oracle Corporation.
Todos los derechos reservados.
Contáctenos Avisos legales y Condiciones de Uso | Declaración de Privacidad
SEV100524063_LRT100524032

Oracle Corporation - Worldwide Headquarters, 500 Oracle Parkway, OPL - E-mail Services, Redwood Shores, CA 94065, United States

Su privacidad es importante para nosotros. Puede iniciar sesión en su cuenta para actualizar sus suscripciones a correos electrónicos o puede optar por no recibir los correos electrónicos de Oracle Marketing en cualquier momento.

Sepa que desuscribirse de las comunicaciones de Marketing no afecta el envío de comunicaciones importantes de negocios en su relación actual de negocios con Oracle como Actualizaciones de seguridad, Avisos de registros para eventos, Administración de cuentas y Comunicaciones de Soporte/Servicios.

C# 7 Previewed

Si puse el titulo en ingles, queda mejor "Previewed" que "una ojeada", jeje

C# cada vez se parece más a scala y en esta version trae pattern matching, toma tu torta:

case int x when x > 0:
case int y:

También descomposición por pattern matching:

Una de las cosas buenas que tiene pattern matching, es que se pueden descomponer elementos para poder analizarlos. En la próxima versión de C# testing.

 if (person is Professor {Subject is var s, FirstName is "Scott"})

Que más tenemos? Bueno, tambien tenemos mejoras en el tipo tupas por ejemplo. Pero todos los ojos están puestos en pattern matching.

Dejo link: http://www.infoq.com/news/2016/04/CSharp-7

domingo, 3 de abril de 2016

¡Quicksort en Haskell!



Me estoy robando un pedazo de código de : http://aprendehaskell.es/content/Recursion.html que es un excelente libro. No digan nada...

Básicamente me tiene obnubilado quicksort en Haskell, decir si les cuento lo que hace o leen el código, es lo mismo porque el código pinta exactamente el algoritmo, sin agregar nada.

quicksort :: (Ord a) => [a] -> [a]
quicksort [] = []
quicksort (x:xs) =
    let smallerSorted = quicksort [a | a <- xs, a <= x]
        biggerSorted  = quicksort [a | a <- xs, a > x]
    in  smallerSorted ++ [x] ++ biggerSorted

Si no lo entendes por que andas flojo de Haskell te lo explico, las primera linea declara la función.

quicksort :: (Ord a) => [a] -> [a]

En la segunda dice, si viene una lista vacía ya fue, el resultado es una lista vacía.

quicksort [] = []

En la tercera linea utiliza pattern matching, para separar el primer elemento del resto. Es decir, lo que esta diciendo es: si no es vacía, separala en el primer elemento "x" y el resto "xs".

quicksort (x:xs) =

En las 2 lineas siguientes define 2 listas la de menores y mayores, para esto utiliza listas por comprensión:

 [a | a <- xs, a <= x]

Es decir, aquí se esta diciendo: a tal que a pertenezca a xs (es decir al resto)  y  que a sea menor o igual que x. De la misma forma define el mayor pero con mayor (y claro!)

Y estas listas las ordena con el algoritmo quicksort utilizando recursividad.

Definidas estas listas devuelve la concatenación de la lista de elementos menores a x (ordenada), x  y los mayores a x. Por lo que devuelve la lista ordenada.

Y listo!!!

Spring Data Programming Cookbook



Encontré este libro gratuito y lo quiero compartir con ustedes.

Es bastante resumido, pero tiene varios ejemplos de spring data conectados con varios almacenes de datos, JPA, neo4j, mongoDB, REST, casandra, Solr, etc...


Dejo link: