domingo, 9 de abril de 2017

JDBI con Groovy (2)

En esta ocasión veremos un ejemplo del uso de JDBI con Groovy.
  1. Una clase principal llamada Dao.groovy
  2. Una interface llamada MyDAO
 MyDAO contendrá los método necesarios para crear una tabla, insertar valores, buscar un registro mediante su id y ,por último un método para cerrar.

El código viene de la página oficial de JDBI. Espero les sirva.



jueves, 5 de enero de 2017

JDBI con Groovy

En esta ocasión usaremos Groovy para crear una aplicación usando JDBI. Prácticamente es el mismo código usado la vez anterior que se dio un vistazo a JDBI. La diferencia radica en el uso de @Grapes y Grab para importar y cargar las librerías necesarias.
He aquí el código


martes, 1 de noviembre de 2016

Un vistazo a Node.js

Node.js es un entorno de ejecución para aplicaciones hechas con Javascript. Posee un ecosistema de paquetes (npm) que nos provee una manera más fácil para el desarrollo de nuestras aplicaciones.

Existen diversas maneras de instalar Node.js. Una de ellas es mediante nvm.

Para ello podemos teclear la siguiente orden en la terminal de comandos (si usas Linux, debo aclarar):

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash


Para que surja efecto hay que teclear:
source ~/.bashrc

Listo, tenemos instalado nvm:
nvm --version

Para instalar node tecleamos: 
nvm install node

Para instalar el gestor de paquetes npm:
nvm install npm

Comprobamos su instalación:
node -v
npm -v 

Ahora a crear el primer ejemplo.
1. Creamos un archivo llamado hola.js
2. Ejecutamos el script mediante node


hola.js
console.log("Hola, Codemonkeys");


En terminal tecleamos:
node hola.js
 

Ya tenemos nuestro primer ejemplo en Node.js

Links
https://github.com/creationix/nvm
https://nodejs.org/es/

sábado, 13 de agosto de 2016

domingo, 26 de junio de 2016

Instalar lenguajes JVM usando SDKMAN!

Existe una herramienta llamada SDKMAN! que nos sirve para instalar lenguajes como Ceylon, Groovy, Scala, además de otros entornos o sdks de desarrollo como Grails, SBT, etc.

Desde Linux podemos teclear en nuestra consola de comandos:
curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

Obtener ayuda:  sdk help
Que versión tenemos: sdk version
Listar lo que podemos instalar: sdk list

Comencemos instalando Ceylon, Groovy, y Scala:
sdk install ceylon
sdk install groovy

sdk install scala

Comprobemos que se instalaron adecuadamente:
ceylon --version
groovy -version
scala -version
 
Con esto tenemos instalados los lenguajes y la herramienta SDKMAN!.

Links
http://sdkman.io/

domingo, 15 de mayo de 2016

Conociendo Java 8

Dicen que con los cambios vienen cosas mejores.  Esperemos que sea así. Java 8 nos trae nuevas características. Una de ellas son: las Lambdas. ¿Qué son las lambdas? ¿Para qué nos sirven?.  Las lambdas son un tipo de función. Es una función "anónima", es decir, que no está vinculada un nombre.

En lenguajes como Python tenemos algo como esto:

switch=[
    lambda n: 'Hola',
    lambda n: 'Que tengas un buen dia' if n == 1 else 'Tal vez no tengas un buen dia',
    lambda n: 'Hoy es un buen dia para empezar' if n == 2 else 'Tal vez otro dia puedas empezar',
]

opcion=raw_input('Introduce un numero ente 1 y 2:')
print switch[0](opcion)
print switch[1](opcion)


En Java 8 tenemos "las expresiones Lambda". Que se puede definir como un "nuevo estilo" o manera de programar usando Lambdas.

En el sitio oficial de Oracle tenemos esta explicación:
"They provide a clear and concise way to represent one method interface using an expression. Lambda expressions also improve the Collection libraries making it easier to iterate through, filter, and extract data from a Collection. In addition, new concurrency features improve performance in multicore environments."

Podemos escribir algo como esto:

Clase instancia = () -> hacerAlgo();

La función puede o no contener parámetros. Además no es necesario definir qué tipo de dato es (String, int, double, boolean, char).

Clase instancia = (String a) -> hacerAlgo(a);  

Ejercicio. Crearemos una interface "Servicio" que contenga un método llamado opera, elcual recibe dos parámetros a y b. Una clase principal con un método llamado "operacion"que recibirá tres parámetros,las variables a,b y una instancia de tipo Servicio. La operación a realizar es la suma.

import static java.lang.System.out;

public class Control{
    public static void main(String[] args) {
        Servicio s=(a,b) -> a-b;
         out.println("35 - 26 = " + new Control().operacion(35, 26, s));
    }

    private int operacion(int a,int b, Servicio servicio){
        return servicio.opera(a,b);
    }
}

interface Servicio{
    int opera(int a,int b);
}


El resultado será 35 - 26 = 9.


Links
http://viralpatel.net/blogs/lambda-expressions-java-tutorial/
http://stackoverflow.com/questions/16501/what-is-a-lambda-function

jueves, 24 de marzo de 2016

Programando en C# : Interfaces y clases abstractas

Para los programadores que vienen de Java puede parecerles raras algunas cosas del lenguaje C#. Recordemos que C# es un lenguaje "heredero" de Java ysigue la misma filosofía, pero con ciertas variantes y una evolución propia. C# nació como lenguaje competidor y ciertos aspectos permanecen igual.


Ejemplo. Calcular el área y el perímetro de tres figuras geométricas: Circulo, Rectángulo, y Triángulo.

Crearemos una clase abstracta (la cual no podrá ser instanciada) que nos servirá como Padre de las demás clases que la extienden.
  • Clase abstracta:  Figura
  • Clases hijas: Triangulo, Rectangulo, y Circulo

Además una interface, una clase también abstracta que nos permitirá definir métodos comunes entre las tres clases creadas.

//tenemos la clase abstracta (y Padre)
abstract class Figura{ ... }

//la interface
interface Funciones { ... }

//las clases hijas y que además implementan la interface Funciones
class Triangulo : Figura , Funciones{ ... }
class Circulo: Figura, Funciones{ ... }

class Rectangulo: Figura, Funciones{ ... }


Código completo:
using System;

public class Codemonkey{
    public static void Main(string[] args){
        Triangulo t;
        Rectangulo r;
        Circulo c;
        try{
            t=new Triangulo();
            c=new Circulo();
            r=new Rectangulo();

            t.setLados(new int[]{3,3,3});
            t.Bases=26;
            t.Altura=23;


            c.Radio=2.4;
            c.Diametro=4.9;

            r.Bases=6;
            r.Altura=4;

            Console.WriteLine("Triangulo\nPerimetro: {0}  , Area: {1}",t.getPerimetro(),t.getArea());
            Console.WriteLine("Circulo\nPerimetro: {0}  , Area: {1}",c.getPerimetro(),c.getArea());
            Console.WriteLine("Rectangulo\nPerimetro: {0}  , Area: {1}",r.getPerimetro(),r.getArea());

        }catch(Exception ex){
            Console.Error.WriteLine("Error {0}",ex.Message);
            Environment.Exit(0);
        }finally{
            t=null;r=null;c=null;
        }
    }
}


abstract class Figura{
    private int[] lados;
    private int altura;
    private int bases;

    public void setLados(int[] lados){
        this.lados=lados;
    }

    public int[] getLados(){
        return lados;
    }

    public int Bases{get;set;}
    public int Altura{get;set;}
}


interface Funciones{
    int getArea();
    int getPerimetro();
}


class Triangulo : Figura , Funciones{

    public  int getPerimetro(){
        return (int)this.getLados()[0] * 3;
    }

    public int getArea(){
        return (this.Bases*this.Altura) / 2;
    }

}


class Rectangulo : Figura, Funciones{

    public  int getPerimetro(){
        return 2*(this.Bases*this.Altura) + (2* this.Bases);
    }

    public  int getArea(){
        return this.Bases*this.Altura;
    }

}


class Circulo : Figura, Funciones{
    private double radio;
    private double diametro;


    public double Radio{get;set;}
    public double Diametro{get;set;}


    public  int getPerimetro(){
        return (int)(3.14159*this.Diametro);
    }

    public  int getArea(){
        return (int)(3.14159*(this.Radio*2));
    }
   
}


Compilar: gmcs Codemonkey.cs
Ejecutar: mono Codemonkey.exe






¿Qué lenguaje de programación debes aprender en un mundo con IA?

Las herramientas de IA están matando, literalmente, a la programación. Cualquiera con un Github Copilot, DeepSeek, Chat GPT, etc. pu...

Etiquetas

Archivo del blog