Translate

domingo, 17 de julio de 2016

Que es una Sequence en Oracle?


En mysql tenemos los valores autoincrementales, que están muy buenos pero siendo realistas tenemos poco control de la secuencia que llena el valor autoincremental.

En oracle en cambio tenemos objetos secuencia que nos permiten tener más control de los valores autoincrementales. Ojo! la secuencia es un objeto independiente del campo que deba llenar. Es decir podemos tener una secuencia para todos nuestros campos autoincrementales o una secuencia para cada uno de ellos. Como ven, tenemos mucha más libertad.

Como creo una secuencia? Asì:


Aja... claro! Mejor veamos un ejemplo, no?


CREATE SEQUENCE customers_seq
 START WITH     1000
 INCREMENT BY   1
 NOCACHE
 NOCYCLE;

Con estas sentencias estamos creando una secuencia que comienza en 1000 y va de 1 en 1.

Ahora bien, como la usamos?

por ejemplo con el metodo nextval podemos acceder al proximo valor.

Select customers_seq.NEXTVAL from dual;

Por lo tanto podemos utilizarla en un insert:


INSERT INTO customers_tab (id, name)
    VALUES (customers_seq.NEXTVAL, 'Acme');

También podemos saber el valor actual con CURRVAL

INSERT INTO Line_items_tab (Orderno, Partno, Quantity)
    VALUES (Order_seq.CURRVAL, 29374, 1);

Ojo al piojo, se puede usar CURRVAL solo luego de ejecutar NEXTVAL, es decir si no ejecutaste NEXTVAL, CURRVAL va dar error.

Podemos alterar la secuencia, pero nunca reiniciarla. Para reiniciarla tenemos que eliminarla y crearla nuevamente.

ALTER SEQUENCE emp_sequence
    INCREMENT BY 10
    MAXVALUE 10000
    CYCLE
    CACHE 20;

Dejo link: https://docs.oracle.com/cd/B28359_01/server.111/b28310/views002.htm




sábado, 16 de julio de 2016

domingo, 10 de julio de 2016

Don Electron

Electron permite construir aplicaciones nativas de la misma forma que construimos una web. Utilizando tecnologías javascript, html y css con electrón podemos construir aplicaciones nativas.

Entre sus características podemos nombrar:

  • Tecnología web: Utiliza HTML, CSS, javascript y tecnologías node.js
  • Open Source: Es totalmente libre y esta alojado en github
  • Cross Platform: compatible con Linux, Windows y OsX


Dejo un video:


y un poco de música tipo rock and roll:


Dejo link: http://electron.atom.io/

jueves, 7 de julio de 2016

White Paper sobre MySQL Enterprise Edition

No soy de dar publicar publicidad de empresas, pero creo que es interesante publicar información técnica sobre productos por más que sean comerciales.

Me llego este mail y se los comparto:

View this message in a Web browser
MySQL Enterprise Edition Product Guide
White Paper
MySQL Enterprise Edition Product Guide
MySQL Enterprise Edition Product Guide
Get Your White Papercta-arrow
Ensure Data Protection and Regulatory Compliance
Did you know that Malware & Ransomware increased 35% in the past year and that over half a billion personal records were stolen or lost in 2015? Additionally, the compliance risk has become one of the most significant ongoing concerns for executives.
 
How can you ensure that your MySQL databases are protected against external attacks and misuse of information while achieving regulatory compliance?
Access our Resource Kit to discover
slap-hr
bulletThe MySQL Enterprise Edition advanced security features and management tools that can help you protect your organization
bulletHow to enable data-at-rest encryption in MySQL
bulletHow to solve complex business auditing requirement
Get it nowcta-arrow

lunes, 4 de julio de 2016

Que es Erlang distribution?


El "distribution protocol" es el medio por el cual varios nodos de Erlang se unen para formar un clúster. Cuando se agrupan los nodos de Erlang, cualquier proceso puede enviar mensajes a los procesos en cualquier otro nodo, y generar nuevos procesos en cualquier otro nodo. Esto forma la base para las aplicaciones distribuidas como Mnesia, la aplicación de base de datos que viene con Erlang/OTP, y RabbitMQ.

En este post,  se describe cómo ejecutar el protocolo de distribución de Erlang sobre TLS, y cuáles son los problemas que puede o no puede resolver.

Dejo link:
https://www.erlang-solutions.com/blog/erlang-distribution-over-tls.html?utm_source=Gplus&utm_medium=groups&utm_campaign=TLSblog

domingo, 3 de julio de 2016

Microsoft anuncia la disponibilidad de .NET Core 1.0

Microsoft ama a linux y cada vez más me creo este cuento...

Porque Microsoft ha anunciado la disponibilidad de .NET Core 1.0, ASP.NET Core 1.0 y Entity Framework Core 1.0, los cuales están disponibles para Windows, OS X y GNU/Linux a través de la instalación de .NET Core 1.0.

.NET Core 1.0 forma parte del proyecto de Microsoft para ir liberando .NET bajo licencia MIT, ofreciendo un framework Open Source para crear aplicaciones web modernas, librerías y aplicaciones de consola, incluyendo las librerías y herramientas necesarias. Además Microsoft ha liberado extensiones tanto para Visual Studio como Visual Studio Code para poder crear proyectos con .NET Core. Para aquellos que estén interesados en programar con este framework, Microsoft ha publicado también documentación en su sitio web, detallando aspectos como el hecho de que es Open Source y haciendo una breve comparativa con Mono y la rama oficial .NET Framework.

Dejo links:
https://dotnet.github.io/
https://www.microsoft.com/net/core

Probando Mint

Como ya había dicho, me baje linux mint 18, y lo probé. Muy bueno!!

Nada más que decir...

Las novedades son muy buenas y todo bajo esa simpleza que lo caracteriza. Cinnamon 3 es muy bueno y estable.

La verdad, muy contento.

Dejo screenshots:







sábado, 2 de julio de 2016

Introducción al Business Intelligence


Me llego esta mail de Universitat Oberta de Catalunya y es muy interesante:

Hola Emanuel,
Nos ponemos en contacto contigo para informarte de que, atendiendo a la petición que nos habéis hecho muchos de vosotros, hemos dado acceso abierto a los contenidos del MOOC.
Creemos que también pueden interesarte otros contenidos en vídeo de nuestra cuenta de Vimeo, por lo que te invitamos a visitarla.
Por otra parte, nos gustaría recordarte que sigues teniendo a tu disposición los recursos siguientes:
  • Notícias y entradas de difusión en Inteligencia de Negocio y Análisis de Datos en nuestro Blog.
  • Toda la información sobre el Máster y los programas de la UOC en Business intelligence.  
Te agradecemos de nuevo tu participación e interés en nuestro MOOC de Introducción al Business intelligence.
Recibe un cordial saludo.
José Ramón Rodríguez
Director de los programas en Inteligencia de negocio y análisis de datos 
Universitat Oberta de Catalunya (UOC)


Yo me perdí el curso pero es muy bueno que compartan los vídeos, y por lo que vi son de muy buena calidad. Muy buena iniciativa.


Ya está entre nosotros Linux Mint 18

Si, ya estoy bajando Mint 18, es una nueva versión de una distro genial. Esta versión esta basada en ubuntu 16.04 y tiene el nombre de Sarah. la mayor novedad es cinnamon 3, que les dejo un video:



Linux Mint 18 llega con un nuevo tema llamado Mint-Y, que le da un aspecto muy atractivo.

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

miércoles, 29 de junio de 2016

Curso de Angular 2

Code school me envío un correo sobre angular 2, la primera clase es gratis.

Dejo más info:

While many web apps were built with Angular 1, the faster and more powerful Angular 2 will soon be the new standard. Play Accelerating Through Angular 2 now to start building the future of the web.
START LEVEL 1

Level 1: Angular 2 Ignition
FREE
Get an introduction to Angular 2 and write your first component with a template.

Level 2: Template Traction
Start with a few structural directives and then transform your view with pipes.

Level 3: Tuning It Up
Make your code more maintainable by organizing it into multiple components, separating your HTML and CSS, creating a data model, and splitting your data into a mock file.

Level 4: Data Binding Boost
Explore how to send data from JavaScript to HTML and HTML to JavaScript using one-way data binding, and then learn how to do both at the same time with two-way binding.

Level 5: Service Fuel Injection
Learn how to create your own services and then how to use the HTTP library to call out to the internet.
Share on Twitter

Encuesta de Stackoverflow


Stackoverflow realizo una encuesta la cual contestaron 56,033 desarrolladores de 173 países.

Los desarrolladores aman Rust. Incluso los desarrolladores de back-end saben JavaScript. Sólo el 7% de los desarrolladores se identifican como "estrellas de rock". La mayoría de los desarrolladores prefieren los perros a los gatos...

Dejo link: http://stackoverflow.com/research/developer-survey-2016

lunes, 27 de junio de 2016

Interfaces Funcionales en Java


La programación funcional tiene un apogeo desde hace tiempo y todos los lenguajes se ven afectado por este éxito, por supuesto Java no es la excepción.

Las interfaces funcionales no son diferentes de la interfaz común.  Ahora con Java 8, podemos tener métodos por defecto en las interfaces con la palabra clave default,  por lo tanto puede haber cualquier número de métodos por defecto en una interfaz; sin embargo, si tiene un sólo una método abstracto se puede considerar como una interfaz funcional. Y podemos utilizar la anotación @FunctionalInterface que si bien es opcional, nos viene bien para documentar.

Por ejemplo:

@FunctionalInterface
public interface MyFuncInterface1{
    public abstract void functionalMethod1();
}

@FunctionalInterface
public interface MyFuncInterface2{
    public abstract void functionalMethod2();
    public default boolean isPresent(){
      return true;
   }
}

Las interfaces funcionales son interfaces con sólo un método abstracto, se deduce inmediatamente que el énfasis se encuentra en lo que hace, es decir es una interfaz que encapsula un comportamiento. Un ejemplo es Runnable :

class RunnableImpl implements Runnable{

   public void run (){
      //do something in a new thread
    }
}

Ahora podemos pasar una instancia de esta clase a un hilo, es más podemos utilizar una clase abstracta:

new Thread(new Runnable(){
   public void run(){
     //do something in this thread
  }
},"NEW-THREAD").start();

Como se puede ver hemos escrito mucho código, solo para pasar una función por parámetro. Por que no usar una expresión Lambda:

new Thread(()->{
   //do something in this thread
}, "NEW-THREAD").start();

Que paso? La interfaz se elimino? En efecto, pudimos pasar sólo la función, el nuevo hilo correría el bloque de código (dentro del método run)

Java 8 proporciona un conjunto completo de interfaces funcionales dentro del paquete java.util.function. Estas interfaces funcionales se adaptan a la mayoría de los requisitos generales de desarrollo diario.

Veamos algún ejemplo:

IntStream intStream = IntStream.of(1,2,3,4,5);
intStream.filter(new IntPredicate() {

           @Override
           public boolean test(int value) {
               if(value%2 != 0)
                   return false;
               return true;
           }
     });

Podemos cambiarlo por:

IntStream intStream = IntStream.of(1,2,3,4,5);
intStream.filter(val -> {
            if (val % 2 != 0)
                return false;
            return true;
               
 });

Interfaces funcionales son un medio de hacer funciones de primer orden, llevando el mundo funcional al orientado a objetos.


domingo, 26 de junio de 2016

Sdkman, The Software Development Kit Manager


SDKMAN! es una herramienta para la gestión de versiones paralelas de múltiples kits de desarrollo de software en la mayoría de los sistemas basados en Unix. Proporciona una interfaz de línea conveniente de comandos (CLI) y la API para la instalación, distribución, eliminar y listar los candidatos.

Sdkman nos permite instalar software en nuestra sdk desintalarlo, chequear versiones. Podemos instalar lenguajes que corren sobre la jdk o sdks de desarrollo como Grails, SBT, etc.

Para instalarlo debemos abrir una terminal y debemos escribir:

$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh"

luego chequear la instalación con el comando:

$ sdk version

Obtener ayuda:  sdk help
Listar lo que podemos instalar: sdk list

Para instalar un entorno por ejemplo: sdk install gradle
Instalar una versión determinada: sdk install scala 2.11.7
Desinstalar una versión determinada: sdk remove scala 2.11.6
Ver las versiones de un sofware: sdk list groovy
Usar una versión determinada: sdk use scala 2.11.6

Que más queres?

SDKMAN! es distribuido bajo licencia Open Source Software: Apache 2

Dejo link: http://sdkman.io/

sábado, 25 de junio de 2016

Clojure, the good parts


Cuando alguien escucha "the good parts" en programación, automáticamente relacionamos con el libro sobre javascript titulado "javascript, the good parts" que nos trataba de convencer de que javascript no era tan terrible. Y no es terrible! (como ven, me convenció)

Me encontré con un buen post sobre Clojure, y me llamo la atención. Dado que no creo que sea terrible, pero si causa mucho recelo en un primer momento un lenguaje que esta lleno de paréntesis.

Dejo link: https://rasterize.io/blog/clojure-the-good-parts.html