Publicado el Dejar un comentario

¿Cómo ganar dinero?

Todos queremos ganar dinero, pero pocos saben que hacer para ganarlo. Para ganar dinero necesitamos vender algo. ¿Que vender? Un producto o un servicio. ¿Y qué producto o servicio vendo? He ahí la clave.

En este artículo en CodeJobs narran cómo o qué hacer par aganar dinero. No te dirá exactamente que hagas pero te enseña que hay que producir algo para recibir dinero. ¿Que compra o que necesita la gente y que es lo que te apasiona hacer? El artículo nos da unas pistas.

Espero les sea de utilidad.

Publicado el Dejar un comentario

Ubuntu Edge: una computadora personal en tu mano.

Canonical presenta Ubuntu Edge, el smartphone que conectado a un monitor se convierte en tu computadora personal.

Un Smartphone que cuesta 32 millones de dólares o Ubuntu Edge

Dispositivo con 4 GB en RAM, pantalla de 4.5 pulgadas con la tecnología Safiro con una resolución de 1280×720 pixeles. 128 Gb. de disco duro. Dos cámaras, una trasera de 8 mega pixeles y una delantera de 2 Mp. Dos antenas, preparado para la tecnología 4G. Procesador multi-core, WiFi 802.11n, bluetooth, GPS, entre otras caracterísitcas.

La fabricación de éste dispositivo, Canonical lo calcula en 32 millones de dólares, y la cual quiere recaudar de aquí al 21 de agosto por medio de una financiación en masa (crowdfunding). ¿Quieres cooperar? Visita el sitio en Indiegogo.

El dispositivo vendría con los sistemas operativos Ubuntu touch y Android, para que el usuario seleccione su preferido.

Aquí unos videos en inglés de lo que se espera del funcionamiento de éste dispositivo:

 

¿Se hará realidad? Esperemos…

Publicado el 2 comentarios

Ejecutar un Job (trabajo) programáticamente con Kettle (Data Integrator)

Pentaho Data Integration también conocido como Kettle es una potente herramienta de Extracción, Transformación y Carga de datos (ETL por sus siglas en inglés) mediante un enfoque innovador basado en metadatos.

En forma gráfica, esta herramienta permite crear transformaciones de datos y trabajos (jobs) para, por ejemplo, pasar datos de una base de datos a otra y/o transformarlos en el proceso. Además permite guardar esas transformaciones y trabajos en un repositorio dentro de una base de datos relacional. Para más información de Kettle visita la página de este proyecto.

Esta herramienta esta hecha en lenguaje java y permite “embeber” o incrustar su tecnología en nuestras propias aplicaciones de escritorio o web. En el siguiente código se muestra cómo ejecutar un job que previamente se diseñó y guardó en el repositorio:

package xxx.bean;

import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.inject.Named;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.Result;
import org.pentaho.di.core.database.DatabaseMeta;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.exception.KettleSecurityException;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.Repository;
import org.pentaho.di.repository.RepositoryDirectory;
import org.pentaho.di.repository.RepositoryDirectoryInterface;
import org.pentaho.di.repository.RepositoryMeta;
import org.pentaho.di.repository.kdr.KettleDatabaseRepository;
import org.pentaho.di.repository.kdr.KettleDatabaseRepositoryMeta;
import org.pentaho.di.trans.TransMeta;

/**
 *
 * @author SCyASIG
 */
@Named(value = "jobControladorMB")
@RequestScoped
public class jobControladorMB {

    /**
     * Creates a new instance of jobControladorMB
     */
    public jobControladorMB() {
    }

    public String ejecutaJob() {
        String irA = "";
        FacesContext contexto = FacesContext.getCurrentInstance();
        String nombreJob = contexto.getExternalContext().getRequestParameterMap().get("nombreJob");
        try {
            KettleEnvironment.init();
            DatabaseMeta dbm = new DatabaseMeta("", "Oracle", "Native", "localhost", "nombreInstancia", "1521", "usuario", "password");
            KettleDatabaseRepositoryMeta rm = new KettleDatabaseRepositoryMeta();
            rm.setConnection(dbm);

            KettleDatabaseRepository repo = new KettleDatabaseRepository();

            repo.init(rm);

            repo.connect("admin", "admin");

            RepositoryDirectoryInterface rdi = repo.getUserHomeDirectory();

            JobMeta jobMeta = repo.loadJob(nombreJob, rdi, null, null);

            Job job = new Job(repo, jobMeta);

            job.start();

            job.waitUntilFinished();
            Result result = job.getResult();

            System.out.println(result.getResult());

            repo.disconnect();
            contexto.addMessage(null, new FacesMessage("El trabajo " + nombreJob + " se generó exitosamente"));
        } catch (KettleSecurityException kse) {
            kse.printStackTrace();
            contexto.addMessage(null, new FacesMessage("Ocurrió un error al ejecutar el trabajo" + nombreJob ));

        } catch (KettleException ke) {
            ke.printStackTrace();
            contexto.addMessage(null, new FacesMessage("Ocurrió un error al ejecutar el trabajo" + nombreJob ));
        } 
        return irA; 
    } 
}

El código pertenece a una clase CDI Managed Bean llamado desde una página JSF. Dentro de la instalación de Kettle 4.4.0 se encuentra la documentación de la API.

Espero les sea útil este post. ¡Saludos!