sábado, 29 de junio de 2013

Oracle 12c listo para bajar!!


Aunque todavía no se anuncio la versión 12c de la base de datos pero ya esta para descargar y obviamente para comprar.

La C es de Cloud por que esta base esta pensada para la nube, incluye una característica que Oracle llama “bases de datos conectables”, las cuales permiten que una sola instancia de base de datos Oracle aloje muchas bases de datos, lo cual permite un uso más eficiente de los recursos del sistema y una administración más sencilla. Oracle también ha posicionado las bases de datos conectables como la mejor forma de lograr la multitenancy para las aplicaciones de nube.

Los proveedores de SaaS (software as a service) generalmente han utilizado la multitenancy a nivel de las aplicaciones, cuando varios clientes comparten una sola instancia de aplicación mientras sus datos se mantienen aparte. Trasladar la multitenancy a la capa de la base de datos proporciona una mejor seguridad y otras ventajas.

La capacidad de multitenancy se venderá como una opción separada, y no se recibirá como parte de los pagos anuales por mantenimiento de los clientes. En una lista oficial de precios de Oracle, que fue actualizada el martes, se podía ver una opción de base de datos multitenant con un precio de 17.500 dólares por procesador. Y una licencia de procesador para la Enterprise Edition seguía con un precio de 47.500 dólares por procesador.

Dejo link:
http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html
http://www.oracle.com/us/corporate/pricing/technology-price-list-070617.pdf

miércoles, 26 de junio de 2013

try catch


Júrenlo!! Por lo que más quieran nunca hagan esto:

try {

//hacer algo

} catch (Exception e) {
}

Por que para que van a hacer un catch si no van a hacer nada, por lo menos dejen un mensaje, algo!

No entienden que otro programador puede estar toda la mañana buscando que se rompió en millones lineas de código hasta encontrar que ustedes no hacen nada con la excepción? Ojo siempre hagan algo, si hay una excepción es por algo, y ni hablar si capturan Exception.

try {

//hacer algo

} catch (Exception e) {
           System.out.println("Che se rompe acá!!");
}

Si podría ser más claro el mensaje, podría usar log4j; lo que quieran; imprimir el stack trace, pero hagan algo!

Y esto aplica a cualquier lenguaje! o tecnología!!

martes, 25 de junio de 2013

Bigdata University



La verdad que la gente de IBM se paso con el sitio
bigdata university, es un sitio donde uno puede tomar cursos gratuitos sobre bigdata y db2.


Esta muy bueno! Lo recomiendo.


Dejo un video:


Dejo el link:
http://bigdatauniversity.com/

DB2 Express ahora cuenta con 16 GB de RAM


Hace tiempo vengo promocionando DB2 Express, por que? porque de las versiones express de base de datos comerciales me parece una de las mejores; además esta orientada al aprendizaje.

Leyendo infoQ me encuentro con la noticia que la nueva versión de DB2 Express nos permite utilizar 16 gigas de memoria. IBM ha flexibilizado las restricciones de memoria en la versión gratuita de su base de datos. La versión 10.5 de DB2 Express-C puede ahora utilizar hasta 16 GB de RAM. El producto ya permitía utilizar espacio ilimitados en disco, pero se limita a un único socket (2 núcleos).

Por el contrario, SQL Server Express se limita a 1 socket (4 núcleos), 1 GB de RAM y 10 GB de almacenamiento. Oracle 11g Express es igualmente restrictiva con 1 CPU, 1 GB de RAM y 11 GB de storage.DB2 está disponible para Windows (x86/x64), Linux (x86, x64, Power Systems), Solaris y OS X. DB2 puede ser gestionado desde la consola o con la herramienta gratuita, IBM Data Studio.

Ya se lo que van a opinar, porque no Postgres o MySQL y tienen razón. Antes que un producto express, mejor un producto open source con una comunidad. Eso no lo discuto! Lo que simplemente opino es que si queremos aprender un producto comercial, porque pensamos comprarlo o porque en nuestra empresa lo utiliza. DB2 Express es muy bueno!

La verdad es que hace mucho que no lo utilizo, pero es una buena oportunidad.

Dejo links:
http://www.infoq.com/news/2013/06/DB2-Express-RAM
http://www.db2teamblog.com
https://www14.software.ibm.com/webapp/iwm/web/pick.do?source=swg-db2expressc&S_CMP=db2teamblog


Scala Days 2013


En Parley han publicado las charlas de scala days 2013, todas las charlas estan muy buenas!!

Dejo link:
http://www.parleys.com/channel/51ae1022e4b01033a7e4b6ca/presentations

domingo, 23 de junio de 2013

Probando Ubuntu 13.04

Tanto tanto hablaron de Ubuntu 13.04 que se me dio por probarlo, y la verdad me gusto, no mucho. Ya saben no me llevo bien con Unity pero bue...

Muchos cambios! Si quieren verlos les dejo un buen resumen: http://es.wikipedia.org/wiki/Anexo:Versiones_de_Ubuntu#Ubuntu_13.04. Pero de igual forma no existen cambios que nos muevan el piso, a mi parecer ubuntu sigue el mismo camino. Y eso esta muy bueno!

Dejo links:
http://www.ubuntu.com/download/desktop
http://releases.ubuntu.com/raring/
http://usemoslinux.blogspot.com/2013/05/que-hacer-despues-de-instalar-ubuntu.html (es muy bueno)


Dejo pantallas:






  

Bottle: Python Web Framework


Se acuerdan de Sinatra? no el cantante! Sinatra el framework web de ruby; básicamente la idea es poder hacer una pagina web con muy poco esfuerzo. Es como un DSL para realizar paginas web; para que puede servir esto? para hacer prototipos o tambien puede ser muy practico para colgar servicios rest con json y consumirlo con javascript. La idea de sinatra  se extrapolo a otros frameworks, tecnologias y lenguajes; como por ejemplo Bottle que es el sinatra para Python.

Bottle es un micro framework rápido, sencillo y ligero para Python. Se distribuye como un módulo y esta formado por un único archivo y no tiene dependencias distintas de la biblioteca estándar de Python.

Veamos un ejemplo de un hola mundo con bottle:

from bottle import route, run, template

@route('/hello/<name>')
def index(name='World'):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

Y listo tenemos una pagina!

Como podemos ver en ejemplo por medio de @route indicamos la url y le decimos que nos van a pasar el nombre por la url, es decir usamos url restfull. Luego retornamos la pagina web. Podemos formar json y devolver json para hacer una API Rest o podemos utilizar template para hacer paginas webs. Genial!

Y si enviamos un mensaje con este framework va a ser...


Dejo link:
http://bottlepy.org
http://bottlepy.org/docs/dev/index.html


viernes, 21 de junio de 2013

The People Who Support Linux: You

La gente de linux.com compartió una genial infografía que describe quienes participan en el proyecto Linux:

Dejo el link:
http://www.linux.com/news/featured-blogs/185-jennifer-cloer/724867-the-people-who-support-linux-you

Dejo la infografía:

infogfx people linux final

miércoles, 19 de junio de 2013

Huayra, el linux más Argentino que el mate!


En visperas del día de la bandera vamos a hablar de un Linux Argentino, como Peron, como el mate, como nosotros.  Esté es el sistema operativo que se utiliza en las netbooks  de el programa del gobierno "conectar igualdad", no voy a dar mi opinión sobre este programa. Pero si les dejo esta reseña del sistema operativo:

Basado en Debian GNU/Linux, Huayra es más seguro, más ágil y desarrollado en Argentina teniendo en cuenta las necesidades tantos de estudiantes como de docentes y manteniendo nuestra identidad nacional. Huayra  toma su nombre del vocablo quechua que significa viento: viento de cambios, vientos de libertad, vientos de soberanía tecnológica. Además de ser un sistema operativo libre, Huayra ha sido pensado y desarrollado para el uso de la comunidad educativa. A través de él puede accederse a una gran variedad de programas y aplicaciones educativas.  

Es un tanto extraño el termino soberanía tecnológica; pero bueno la verdad es que es muy bueno que se haya optado por una alternativa libre y se haya decidio invertir en software libre. En mi opinión es un buena decisión.

Un poco de info técnica:

Para ello decidimos basarnos en Debian, una distribución de GNU/Linux que:

  • - Permite ser adaptada a necesidades propias para diseñar distribuciones específicas.
  • - No depende de ninguna empresa o corporación y sus formas de gobierno se encuentran documentadas y son permeables al ingreso de nuevos actores.
  • - Posee cerca de 25 mil paquetes de software y soporta más de 10 arquitecturas de hardware.
  • - Cuenta con un gran comunidad de voluntarios a nivel mundial.
  • - Posee un sistema de control de calidad fiable y bien documentado.
  • - Es la metadistribución origen de otras grandes distribuciones como Ubuntu, Guadalinex, Canaima, Knopix, etc.

Detalles Técnicos de Huayra

  • - Basada en Debian
  • - Entorno de escritorio: Gnome Shell
  • - Licencia: Mayormente GNU GPL
  • - Repositorios propios y abiertos
  • - Documentación propia
  • - Tema de ventanas propio


Dejo link:
http://huayra.conectarigualdad.gob.ar/
http://www.conectarigualdad.gob.ar/

domingo, 16 de junio de 2013

Que curso puedo hacer?

Que curso puedo hacer? y si hago este o aquel curso, sera difícil, fácil, cuantas horas me puede llevar por semana?

Para responder estas preguntas existen redes sociales de cursos on line... Muy bueno! Donde la gente opina de cursos que ha hecho y deja su puntuación,  además agrega cuantas horas le consume y que dificultad tiene.

Dejo los links:
http://knollop.com/
http://coursetalk.org/

Simplify IT and Unleash Innovation




Oracle nos regala una guía para simplificar nuestro trabajo, obviamente con sus productos; pero vale la pena darle una ojeada. Lo único malo es que hay que hacerse un usuario, es gratuito, pero hay que hacerlo :(











Dejo el link:
http://www.oracle.com/webapps/dialogue/ns/dlgwelcome.jsp?p_ext=Y&p_dlg_id=11705213&src=7011103&Act=103

sábado, 15 de junio de 2013

Racket


Como les aconseje en el siguiente post : http://emanuelpeg.blogspot.com.ar/2013/06/introduction-to-systematic-program.html; un curso que esta muy bueno en cursera es "Introduction to Systematic Program Design". En este curso se utiliza el lenguaje Racket.

Racket es un lenguaje de la familia de lisp/scheme, multiparadigma y es un lenguaje de propósito general que se utiliza para la enseñanza, investigación y para cualquier otra cosa. Tiene un entorno que se llama DrRacket, funciona en diferentes plataformas; yo lo estoy corriendo en Linux sin problemas.

Como se pueden imaginar al ser un lenguaje derivado de lisp es funcional, pero también fue influido por scheme y eiffel. De este ultimo toma la programación dirigida por contratos. A la vez soporta macros y es muy extensible. Una cosa curiosa es que soporta elementos gráficos, en realidad me resulta curioso a mi, podemos hacer esto:

(require 2htdp/image)
(triangle 80 'solid 'red)

y dibujara un triangulo.

Esta muy bueno para enseñar programación funcional y también para introducir a los alumnos a programación dirigida por contratos.

También tiene funciones similares a doctest de python es decir podemos hacer:

;; devuelve la suma de dos nros
(check-expect (suma 2 3) 5)
(check-expect (suma 5 3) 8)
(check-expect (suma 2 30) 32)
(check-expect (suma 2 -3) -1)

(define (suma nro1 nro2)
  (+ nro1 nro2)
 )

y haciendo esto la ide nos devolverá: "All 4 tests passed!"

Es lanzado con licencia LGPL por lo tanto lo podemos usar para hacer proyectos GPL y también comerciales.

Dejo links:
http://racket-lang.org/
https://en.wikipedia.org/wiki/Racket_(programming_language)

Dejo unas fotos de la IDE:



Javapocalypse

Un divertido vídeo de javaZone:


jueves, 13 de junio de 2013

martes, 11 de junio de 2013

Aprender couchdase

Si queres aprender couchbase solo tenes que ir a:  http://www.couchbase.com/learn donde podrás encontrar mucha información, webinars, papers,  presentaciones.

domingo, 9 de junio de 2013

Introduction to Systematic Program Design

Quiero recomendar el siguiente curso de coursera "Introduction to Systematic Program Design", que explica como diseñar programas. Esta muy orientado a la programación funcional, se usa un lenguaje llamado racket que es un derivado de Lisp, también se basa en un libro: "How to Design Programs". A primera vista esta muy bueno.

Dejo un video:


Dejo links:
https://class.coursera.org/programdesign-001
http://www.ccs.neu.edu/home/matthias/HtDP2e/
http://htdp.org/
http://racket-lang.org/


Libro oficial del administrador de Debian en español para su descarga


Quiero compartir este libro que es gratuito y vale la pena su difusión.

Dejo el link:
http://www.4shared.com/office/iY4NOc8Z/Hertzog_R__Mas_R_-_El_libro_de.html

y la fuente:

http://www.rinconinformatico.net/libro-oficial-del-administrador-de-debian-en-espanol-para-su-descarga/

sábado, 8 de junio de 2013

Las Ides del futuro...

Leyendo infoQ me encontre con una noticia de una idea que se desarrollo sobre OpenGL, me parecio buena pero muy inutil. La verdad es que creo que no hay mayores inovaciones en los entornos de desarrollo.  No he utilizado IntelliJ que según lo que sé esta bastante bueno. Que agregarían a las IDES del futuro?

Dejo video:


Dejo link:

10 cosas que un desarrollador debe conocer de couchdase

Couchdase es un producto que nació como la fusión de memdase y couchDB. La empresa Membase Inc. anuncio que se funcionaría con CouchOne. Uniendo también sus productos memdase y couchDB.

Como desarrolladores debemos saber los siguientes 10 items:


  • Acceso a los documentos en Couchbase es consistente: Couchbase garantiza una fuerte consistencia, asegurándose de que todas las lecturas y escrituras de un documento en particular van a un solo nodo de un clúster. 
  • Las escrituras son asíncronas por defecto, pero se puede controlar: Por defecto, las escrituras en Couchbase son asíncronas - replicación y persistencia suceden en background, y el cliente es notificado de un éxito o un fallo. Los cambios se guardan en la memoria y se vacían en el disco y replican en otros nodos Couchbase de forma asíncrona.
  • Couchbase tiene operaciones atómicas para contar y anexar
  • Un cubo es equivalente a una base de datos. Puede almacenar objetos de características o atributos diferentes en el mismo cubo. Así que si usted se está moviendo de un RDBMS, debe almacenar los registros de varias tablas en un solo cubo. Recuerde que debe crear un atributo "type" que ayudará a diferenciar los distintos objetos almacenados en el cubo y crear índices en ellos. Se recomienda comenzar con un cubo y crecer a más grupos cuando sea necesario
  • Trate de usar 5 o menos cubos en Couchbase. Nunca más de 10: Documentos no tienen un esquema fijo, varios documentos con diferentes esquemas pueden estar en el mismo cubo. La mayoría de las implementaciones tienen un bajo número de cubos (normalmente 2 ó 3) y sólo unos pocos más de 5. Aunque no existe un límite duro en el software, el máximo de 10 cubos previene problemas de performance.
  • El bloqueo optimista o pesimista, ¿cuál debería elegir? Si su aplicación necesita de bloqueo, considere primero el uso de CAS (bloqueo optimista) antes de usar (bloqueo pesimista) GETL. Pero recuerde, bloqueo no puede ser bueno para todos los casos.
  • Utilice las operaciones multi-get: Una vez que la aplicación cliente tiene una lista de los ID de documento, el enfoque de mayor rendimiento para recuperar artículos a granel con una petición de varios GET. Esto funciona mejor que un bucle de serie que trata de obtener para cada elemento de forma individual y de forma secuencial.
  • Mantenga las bibliotecas de cliente actualizadas: Asegúrese de que usted está utilizando la biblioteca de cliente más reciente. Bibliotecas de cliente Couchbase están disponibles en Java,. NET, C / C + +, Ruby, Python y PHP.
  • Modelar los datos mediante documentos JSON: Couchbase Server es compatible con JSON y el formato de documento binario. En primer lugar, tratar de modelar sus datos mediante JSON. Documentos JSON se pueden indexar y consultar. Puede almacenar blobs binarios y consulta gama off de los nombres clave. Comience por la creación de documentos de objetos a nivel de aplicación.
  • Utilice índices efectivamente: Use acceso clave primaria tanto como sea posible. Couchbase tiene claves y metadatos en la memoria - accesos de datos son rápidos.
Dejo link:



viernes, 7 de junio de 2013

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