Translate

jueves, 6 de junio de 2013

Limitar un conjunto de datos agrupados




El problema es simple,queremos los 5 primeros mails de las personas, tenemos una tabla personas y una tabla mails. y la tabla mails conoce a la tabla personas.  Algo importante es que queremos los últimos mails, es decir los más nuevos.


Como podemos solucionar esto? con oracle la tenemos fácil porque existe el rank, la función rank va rankeando los resultados de una query, los rankea por una condición; por ejemplo los mails por persona:


SELECT RANK () OVER (PARTITION BY persona_id ORDER BY fecha DESC) orden,
persona_id,
email
FROM emails

Ahora bien si queremos limitar la cantidad de mails debemos hacer:

select persona_id, email from
(SELECT RANK () OVER (PARTITION BY persona_id ORDER BY fecha DESC) orden,
persona_id,
email
FROM emails)
WHERE orden < 5

Se pueden hacer muchas cosas muy buenas con rank y over. Over se puede utilizar también con el count.

Y todo gracias a Facundo Torres!!

Dejo links:
http://www.techonthenet.com/oracle/functions/rank.php
http://www.orafaq.com/node/55
http://www.oracle-base.com/articles/misc/rank-dense-rank-first-last-analytic-functions.php

miércoles, 5 de junio de 2013

Spring Framework 4.0 fue anunciado

La gente de spring no para y anuncia una nueva versión de su framework; que al parecer va tener su primer release candidate en septiembre de este año. Y es sorprendente si tenemos en cuenta que es un cambio importante de versión, con soporte a Java 8 y JEE 7, más un plus de funcionalidad.

Spring sigue creciendo, que se viene? Soporte a Java 8 es decir:

  • JSR-335 Lambda expressions.
  • JSR-310 La nueva Api de fechas de java 8
  • Y soporte al nuevo bytecode de java 8, para soportar Lambdas. 

Soporte a JEE 7 es decir:

  • JSR-343 JMS 2.0.
  • JSR-338 JPA 2.1.
  • JSR-349 Bean Validation 1.1.
  • JSR-236 Java EE 7 Enterprise Concurrency support.
  • JSR-356 Spring's WebSocket endpoint mode.

Que más agregar? Esperamos con ansias esta nueva versión.

Dejo link:
http://blog.springsource.org/2013/05/21/spring-framework-4-0-m1-3-2-3-available/
http://www.infoq.com/news/2013/06/Spring_Framework_4.0_Announced

martes, 4 de junio de 2013

Distro Picker, una gran idea para saber cual es tu distro ideal


Seguro que no sabes que instalar, te gustan todas las distros de linux. Algo que te puede ayudar es el Distro Picker. Es muy facil de usar, completas que escritorio te gusta más, que manejador de paquetes, para que lo vas a utilizar y listo. Te tira tu distro ideal.

Dejo link:
http://tuxradar.com/content/distro-picker-0

Manual de Ubuntu


Si instalaste ubuntu y no tenes idea de la vida, ni que es linux este manual es para vos. Un manual para principiantes y totalmente en castellano

Dejo link:
http://issuu.com/jarodriguez/docs/manual_ubuntu

99 Bottles of Beer


Como sabrán me gusta muchos los lenguajes de programación pero mucho más la cerveza. Por lo tanto quiero compartir el siguiente sitio que trata de lenguajes de programación aunque su nombre referencia a la cerveza.

En este sitio se recopilan ejemplos de un programa que debe imprimir la letra de la canción: 99 Bottles of Beer. Fácilmente en este sitio podemos comparar lenguajes de programación.

Dejo el link:
http://www.99-bottles-of-beer.net


domingo, 2 de junio de 2013

Processing

Processing es un lenguaje de programación y entorno de desarrollo de código abierto para las personas que desean crear imágenes, animaciones e interacciones. Desarrollado inicialmente con el objetivo de generar bocetos de software y para enseñar los fundamentos de la programación informática en un contexto visual, Processing se fue convirtiendo en una herramienta para la generación de trabajo real y profesional. Hoy en día, hay decenas de miles de estudiantes, artistas, diseñadores, investigadores y aficionados que utilizan processing para el aprendizaje, creación de prototipos de software y generación de software real.

Bueno pero que se puede hacer con Processing? Todo lo que tenga que ver con manipulación de imagenes, animaciones, etc. Les dejo unos vídeos:






Dejo link:
http://www.processing.org/

sábado, 1 de junio de 2013

La historia de los lenguajes de programación en Infrografía.

Historia de lenguajes de programación

Interesante infografía de BigData

Los últimos avances en Neo4j


Leyendo InfoQ me encontré con un articulo sobre los avances de Neo4j. Neo4j anuncio su versión 1.9 y 2.0; y también anuncio un nuevo proyecto, Neo4j para Android.

Que trae de nuevo Neo4j 1.9?

  • Mejora en tolerancia de fallos.
  • El Cypher (Lenguaje de consulta de Neo4j) creo nuevas funciones: manejo de cadenas, REDUCE y TIMESTAMP.
  • Mejor copia de seguridad para la versión empresarial, que ahora detecta si el total o una copia de seguridad incremental es necesaria.
  • Mejora de la capacidad de memoria y el rendimiento.

Neo4j 1.9 necesita el jre 1.7 para correr.

Es grandioso ver como va creciendo esta base de datos NoSQL.

Dejo link:
http://www.infoq.com/news/2013/05/neo4j-1-9-2-0
http://blog.neo4j.org/2013/05/neo4j-19-general-availability.html
https://github.com/neo4j-contrib/neo4j-mobile-android


jueves, 30 de mayo de 2013

Tour de Go



Mirando GenbetaDev me tope con una nota de recursos de Go y el que más me gusto fue Tour de Go (igual  dejo el link de la nota completa). El Tour de Go esta bueno porque es fácil y te explica con ejemplo como funciona el lenguaje. Recordemos que Go es el lenguaje de Google que esta creciendo día a día.

Dejo links:
http://go-tour-es.appspot.com/#1
http://www.genbetadev.com/lenguajes-y-plataformas/empezar-a-aprender-go-golang

Linux Mint 15 “Olivia” released!



Como sabrán me encanta Mint, y estoy orgulloso de presentales a Olivia la nueva versión de sistema operativo, que hay de nuevo, viejo?

  • Mate 1.6
  • Cinnamon 1.8
  • Dos nuevas herramientas "Software Sources" y "Driver Manager"
  • y un montón de mejoras y bug fixing!

Lo estoy bajando, espero que hagan lo mismo!

Dejo link:
http://blog.linuxmint.com/?p=2366
http://linuxmint.com/rel_olivia_whatsnew.php
http://www.linuxmint.com/

Dejo algunas pantallas:


Y también le dedico una canción:


martes, 28 de mayo de 2013

REFERENCE CARDS for MongoDB


La gente de 10gen nos dejo un resumen sobre su base de datos NoSQL, MongoDB y lo quiero compartir con ustedes.

Dejo link:
http://info.10gen.com/rs/10gen/images/mongodb_qrc_booklet.pdf

Rapid Prototyping with JS



Quiero compartir el siguiente tutorial, casi libro, sobre como hacer prototipos en javascript rápidamente. Utiliza jquery, Underscore.js y Backbone.js que los 2 últimos no los he usado.

Dejo link:
https://leanpub.com/rapid-prototyping-with-js/read

domingo, 26 de mayo de 2013

Continuamos con Erlang

Agner Krarup Erlang (1 de enero de 1878 – 3 de febrero de 1929) fue un matemático, estadista, e ingeniero danés que inventó los campos de Ingeniería de tráfico (Telecomunicaciones) y la Teoría de Colas. En su honor bautizaron al lenguaje de programación Erlang con su apellido.

Se acuerdan del post: http://emanuelpeg.blogspot.com.ar/2013/05/vistazo-erlang.html bueno vamos a seguir dándole un vistazo a Erlang.

Las variables en Erlang son un tanto diferentes que otros lenguajes; al ser un lenguaje funcional solo se le pueden asignar valores a varible solo una vez. Es decir que las variables no pueden variar :P

Si necesitamos asignar otro valor, necesitamos otra variable.

3> Integer = 4.
4
4> Integer = Integer + 5.
** exception error: no match of right hand side value 9
5>

Como se puede ver las variables en Erlang comienzan con mayúsculas y pueden contener letras y números. También es importante notar que no indicamos el tipo sino que el compilador lo infiere. 

12> Double2 = 3.5.
3.5
13> Double4 = 3.5 + Double2. 
7.0
14> 
14> Texto = "hola".
"hola"
15> 

Erlang nos ofrece una estructura de datos compleja para poder representar la realidad. 

15> Programadores = [ {person,"Juan","Gomez", 
15>  {lenguajes, [java,python] }
15> },
15> {person,"Pedro","Gomez",
15> {lenguajes, [java,python,erlang] }
15> }].                        
[{person,"Juan","Gomez",{lenguajes,[java,python]}},
 {person,"Pedro","Gomez",{lenguajes,[java,python,erlang]}}]

Hasta acá llegamos por hoy, pero continuaremos aprendiendo este fascinante lenguaje.