Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - AFelipeTrujillo

#141
si ya lo estuve mirando y se puede con el parámetro os.name....
#142
Java / Re: [Aporte by 4ng3r] Crear Voz con Java
21 Febrero 2010, 22:20 PM
0k de nada !!!
#143
jejeje exacto, aunque no se si exista alguna librería para gestionar estos procesos de forma general... me pondré en la búsqueda para sacar un mejor c0d3

salu2
#144
Java / [Aporte by 4ng3r] Crear Voz con Java
21 Febrero 2010, 20:12 PM
    Si alguna vez escuchado el Narrator.exe de Windows, pues programe uno parecido en java solo es que toca agregarle la GUI pero no es gran cosa, simplemente es colocarle un jtextfield y un boton, enviar como parámetro el string que le de la entra al jtextfield al método hablar(), como cosa adicional hice que me generara un archivo .wav  y lo guardara en la carpeta del proyecto.

    Bueno para poder desarrollar algún code con estas características debemos descargar la siguiente librería (
AQUI) lo pegamos en el classpath todos los .jar y nos ponemos a codear !!!

Esta libreria solo puede generar tres tipos de archivo:


  • wav
  • au
  • aif

Bueno les dejo el code:

[/list]
Código (java) [Seleccionar]
import com.sun.speech.freetts.audio.AudioPlayer;
import com.sun.speech.freetts.audio.NullAudioPlayer;
import com.sun.speech.freetts.audio.SingleFileAudioPlayer;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.AudioFileFormat.Type;

import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

public class MiVoice_TTS {

    private Voice v;
    public MiVoice_TTS(String texto) {
        VoiceManager admin_voice= VoiceManager.getInstance();
        //administrador de recursos
        v=admin_voice.getVoice(texto);
        v.allocate();
    }

    public static void main(String[] args) {
        MiVoice_TTS voz = new MiVoice_TTS("kevin16");
        // Creamos el objeto que me generara la voz de Kevin16
        voz.hablar("Hi! my name is Anger");
        voz.hablar("Este es un DEMO, bye ");
        // LO QUE QUERAMOS QUE SE OIGA !!!
        voz.toFile("archivo.wav","Andres");
        //GENERAMOS EL ARCHIVO (archivo.wav)
        voz.cerrar();
    }

    private void cerrar() {
        v.deallocate();

    }

    private void toFile(String filename,String text) {
        Type tipo = getAudioType(filename);

        AudioPlayer audio = null;
        if(audio == null)
            audio = new NullAudioPlayer();
        audio = new SingleFileAudioPlayer(getNombre(filename), tipo);
        System.out.println("audioPlayer "+audio);
        this.v.setAudioPlayer(audio);
        this.v.speak(text);
        audio.close();   

    }

    private String getNombre(String filename) {
        int nam = filename.indexOf(".");
        if (nam==-1){
            return filename;
        }
        return filename.substring(0,nam);
    }

    private Type getAudioType(String filename) {
        // Elejimos el tipo de archivo
        Type [] tipo = AudioSystem.getAudioFileTypes();
        String ext = getExtension(filename);
        System.out.println(ext);
        for (int  i= 0; i < tipo.length; i++) {

            if (tipo[i].getExtension().equals(ext)){
                System.out.println("Se ha elejido la extensión: "+tipo[i].getExtension());
                return tipo[i];
            }
        }
        return null;
    }

    private String getExtension(String filename) {
        int sub = filename.indexOf(".");
        return filename.substring(sub+1);
    }

    private void hablar(String texto ) {
        this.v.speak(texto);
        // Meotodo que envia el texto para ser reproducido
    }
}


LINK

#145
creo q por eso precise en el titulo que era para windows no para sistemas operativosen general...seria interesante un desarrollo de la forma de cmo ud la propene...
#146
Java / [Aporte by 4ng3r] Ver Procesos de Windows
20 Febrero 2010, 07:26 AM
estoy sin nada que hacer, se ocurrió esto , les dejo este code !!!

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/*
* 4ng3r C0d!|\|G
*
* VER PROCESOS CON JAVA
* */
public class Procesos {

public static void main(String[] args) throws IOException {
verProcesos();
}

private static void verProcesos() throws IOException {
// LLAMAMOS LA VARIABLE DE ENTORNO WINDOWS Y EL PROGRAMA Q GESTIONA
// LOS PROCESOS
String consola = System.getenv("windir")+"\\System32\\"+"tasklist.exe";
// Ejecutamos el comando
Process proceso=Runtime.getRuntime().exec(consola);
//OBTENEMOS EL BUFFER DE SALIDA
BufferedReader entrada = new BufferedReader(new InputStreamReader(proceso.getInputStream()));
String tmp;
while((tmp=entrada.readLine())!=null){
System.out.println(tmp);

}
entrada.close();

}

}


#147
Java / Re: [APORTE by 4ng3r]Java, C y DLL
18 Febrero 2010, 22:56 PM
0k gracias espero que sea de gran aporte !!
#148
Java / [APORTE by 4ng3r]Java, C y DLL
17 Febrero 2010, 18:59 PM
JAVA, DLL y C

Un saludo a todos en la comunidad, ya pude hacer mi programita que tantas canas me saco.... pero en fin


Les recuerdo: Hacer dos programas y se comuniquen por medio de librerías dinamias o DLL. El ejercicio trata de instanciar un arreglo de enteros con un dimensión de 5000 y en cada espacio agregar un numero radom de 0 a 60000  :xD y en su salida imprimir estos numeros en orden ascendente. La cuestion es que el arreglo se debe  instanciar en C o C++ (use C), el arreglo lo recibe un programa en java y este los ordena y después el programa en java envia el arreglo en orden a C y este los imprime. (Facil no???  ='()

Bueno, para empezar con la solución al problema empeze leyendo todo lo referente al JNI pero igual no me daban tantas ideas que digamos... pero en si lo esencial del estudio es que JAVA manejo un su JDK una carpeta ubicada en  %JAVAROOT%/BIN un programa  llamado javah.exe. Este programa apartir de un .class crear un .h para manejarlo desde C.

Estos son los pasos para la solución al problema. jejee pero solo voy hacer el hola mundo y de hay en adelante es googlear y leer este manual y podran sacar el ejercicio anterior:


  • 1. Intalar el JDK y un compilador de C o C++. Utilice el Visual C++ de .NET y su compilador es CL.exe y el de java es JAVAC.exe JAVA SE JDK  y para el Visual C++ pueden trabajar la version 6.0, sino quieren trabajar un .NET .... Les recomiendo este  torrent


  • 2. Un Pequeña definición !!!
    Bueno antes empezar con la configurarion voy hacer un definicion de ¿QUE ES JNI?
    Java Native Interface (JNI) es la mecánica propuesta por Java para invocar funciones implementadas en lenguaje C desde programas Java.



  • 3.
    Configuración de las variables de Entorno:

    Debemos asegurarnos de tener bien configurado el entorno de compilación de C y de JAVA, debido a que lo voy a explicar todo lo hice bajo consola.

    Variable JAVAHOME y VCHOME:

    - Incio
             >MiPc (click Derecho)
                                               > Propiedades
                                                                     >Opciones Avanzadas
                                                                                                              > Variables de Entorno (Click)

    Nos debe generar un ventanita de este tipo:

    Cuando click podemos ver la diferentes variables que maneja sistema:


    Fijemonos en variables del sistema (en el ciculo rojo) y en la variable PATH. Si se dan cuenta tiene uno parámetro importarte y es el C:\Windows\System32 y es desde allí que nosotros tenemos acceso a cualquier programa que contiene este carpeta. Como el TELNET, PING, MsPaint... entre otros y se considera una variable importante dentro del entorno Windows.

    Nos paramos encima de PATH y le demos EDITAR vamos hasta el final de la linea (SIN BORRAR NADA) y agregan la dirección en donde se encuentra el Bin del JDK y del Visual C++

    Por Ejemplo: En mi máquina el JDK se encuentra en C:\Archivos de Programa\Java\JDK1.6.0_13\Bin y en vidual Studio 2008 esta en C:\Archivos de Programa\Microsoft Visual Studio 8\VC\bin

    Copiamos y pegamos cada una de las direcciones en los parámetros del PATH, separados por PUNTO Y COMA (IMPORTANTE !!!! ) y luego ACEPTAR


    Para consultar si quedo bien nuestra configuración debemos ir a la consola (Win+R> CMD) y escribimos javac  y si salen los parámetros de java es por que esta bien configurado


    También lo hacemos para el Visual C++ con el Comando cl y si nos salen los parametros del Visual C++ estara bien configurado y Listo para Trabajar  :xD




  • 4. Aseguradonos de que el entorno esta bien configurado debemos crear dos variables mas que son el INCLUDE (donde almacenamos las librerías a usar como el JNI.h) y el LIB para las Librerías del Visual C++


    Para la variable INCLUDE que no esta definida, demos crearla y pasarle cada uno de los parámetros. En las misma Ventana de las variables de entrono y ubicándonos en Variables del Sistema damos Click en NUEVA nos sale un ventanita y le ingresamos con el nombre de INCLUDE y en los parametros o valor de la variable  agregamos las direcciones donde se alojan los INCLUDES  de cada Compilador.

    Para JAVA se encuentra (en mi maquina) en : C:\Archivos de Programa\Java\jdk1.6.0_13\include (podemos ver el jni.h) y segudi de un PUNTO y COMO también agregamos C:\Archivos de Programa\Java\jdk1.6.0_13\include\Win32

    Para el VISUAL C++ (en mi maquina y utilizando Visual Studio .NET) en : C:\Archivos de Programa\Microsoft Visual Studio 8\VC\include

    NOTA: Les recuerdo cada parametro va separado de un PUNTO Y COMO ";"

    Seguimos con la variable LIB, aqui especificamos en donde se encutran las librerias de Visual C++

    Esta variable no esta definida y como la anterior hay que crearla, se crea con el nombre de LIB y como único parámetro le pasamos esta direccion (en mi maquina) C:\Archivos de Programa\Microsoft Visual Studio 8\VC\lib

    Para verificar si quedo bien configurada entramos a consola y escribimos el comando LIB, pero si escribimos INCLUDE no nos aparece nada, pero sabemos que la variable existe.




    • 5. Ahora Si a Programar !!!! :xD

    Listo después de este preliminar (que no se si es ecencial, no quiero ser tan básico en mis POST) empezaremos en primera instancia creando nuestro programa en java.

    Antes de todo, creemos una carpeta en C:\ o en donde quieran y guarden cada uno de los archivos generados en el proceso en esta carpeta!!!


    Este es el CODE y con sus anotaciones:

Código (java) [Seleccionar]
public class HolaMundoJNI{

public native void muestraHolaMundo(); //invocamos el Metodo NATIVO

public static void main (String arg []){

HolaMundoJNI  test = new HolaMundoJNI ();
test.muestraHolaMundo();
}

static {
System.loadLibrary("libreria"); // Cargamos la Libreria DLL generada mas Adelante ;)
}


}


    Guardamos el archivo como
HolaMundoJNI.java y pasamos a la consola del sistema ingresamos a la carpeta creada anteriormente (con cd) y llamamos al compilador de JAVA (javac)


NOTA: Si no sale algun error, el compilador señalara la linea el comando que esta mal dentro de codigo

Después de haberlo compilado, pasamos a crear el archivo de cabecera o mas conocido como .h. Para esto debemos ejecutar una herramienta que lleva el JDK que se llama javah -jni y se aplica sobre el .class creado anteriormente.


Si observamos la carpeta donde estamos generando cada uno de los archivos podemos contar; un .class y un .h con el mismo nombre del .java, en mi caso HolaMundoJNI.java  =O

ESTE ES EL ARCHIVO HOLAMUNDOJNI.H

[/list]/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HolaMundoJNI */

#ifndef _Included_HolaMundoJNI
#define _Included_HolaMundoJNI
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class:     HolaMundoJNI
* Method:    muestraHolaMundo
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HolaMundoJNI_muestraHolaMundo
 (JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif





[/list]


  • 6. Programando en C:

    Después de haber generado el .h, procedemos a crear el CODE en C, este es el código y sus anotaciones.

    HolaMundoJNIimpl.c

    #include <jni.h>
    #include "HolaMundoJNI.h"
    #include <stdio.h>

    JNIEXPORT void JNICALL Java_HolaMundoJNI_muestraHolaMundo (JNIEnv *evn, jobject obj){

    printf("Hola Mundo!!!");
    return;
    }


      Podemos observar que declaramos un función
    JNIEXPORT que no retorna nada (void) y como parámetros tiene un evento (*env) y un Object (obj) y es la misma función que esta llamando el .h... y en esta función escribimos todo el codigo que queramos  :xD

    Después pasamos a compilar el código con el VISUAL C++  


    Después de haber ejecutado el comando, nos aparecerá unos errores de compilación, pero en si el fin de haber ejecutado este comando es generar los archivos para pasar a crear el DLL  (el archivo .exp .obj y .lib)

    Para crear la librería utilizamos el comando cl con el modificador -LD



    Ya teniendo la libreria .dll ya es solamente es ejecutar el programa en java  y LISTO!!! con el comando java

    y el nombre del .class





LINK



#149
Bases de Datos / Arquitectura de un SDBG o DBMS
17 Febrero 2010, 17:23 PM
Hola hace rato compre un librillo que se llama Introducción a las Bases de Datos Relacionales es un texto bastante superficial por lo que vi, no profundiza mucho pero da los conceptos concretos y muy bien definidos.

Muchos se preguntaran como es el funcionamiento de manera lógica de un SDGB (Sistema de Gestion de Bases de Datos) o su acrónimo en ingles DBMS, la arquitectura de los sistemas de base de datos no se ha estandarizado al mismo grado que la de un compilador, pero hay ciertos módulos que de un modo u otro forma parte de la mayoría de los sistemas de gestión, están organizadas de la siguiente manera:


  • Gestor de Archivos: Este modulo que interactúa directamente con el sistema de archivos provisto por el sistema operativo. Tiene a su cargo el manejo de las estructuras físicas de almacenamiento, administración de espacio en memoria secundaria (como otros HD, cd o pendrive) y métodos eficientes de acceso y búsqueda.
  • Gestor de Datos:Ubicado a un nivel un poco mas alto de abstracción que el anterior, este modulo provee las funciones fundamentales que sirven de interfaz entre los datos y el programa de aplicación o consultas de usuario. Por ejemplo funciones típicas provistas a este nivel son la de encontrar todos los registros, o verificar que un conjunto de datos satisfaga las restricciones de la semántica, es decir de alguna consulta sql.
  • Procesador de Consultas: Este nivel traduce las consultas expresadas en un lenguaje de consulta de alto nivel (como sql) a una sucesión de pedidos básicos al nivel del gestor de bases de datos que pueda interpretar.
  • Controlador del Paralelismo: Cuando el sgdb soporta múltiples procesos y posiblemente modificando una misma base de datos, este controlador nos garantiza que estos procesos no interfieran unos con otros.
  • Sistemas de Recuperación: Junto con el controlador del paralelismo este modulo implementa la función del manejo de las transacciones. El sistema de recuperación debe mantener suficiente información acerca de progreso de los distintos movimientos que sufre la base de datos para garantizar un pronta restauración y casos de falla o perdida parcial o total de la información.

Anexo:

Estadísticas de mercado en el uso de SDBG


FUENTE
#150
Bases de Datos / Modelo Entidad Relacion
17 Febrero 2010, 17:22 PM
Modelo Entidad Relacion


El concepto de este modelo son de alto nivel semántico, cercanos al lenguaje usado por el usuario y no al del sistema. Este modelo fue propuesto Peter Chen en 1976, no como un modelo de datos a ser implementado en al practica por un SGDB o DBMS cino como herramienta conceptual para el diseño de una base de datos.

Entidades y Relaciones

Un modelo ER (entidad relación) es una descripción del mundo real que el diseñador intenta modelar según el el sistema de información. En este modelo, las estructura se describe por un conjunto de entidades u objetos de interés relacionados entre si. Por ejemplo, las siguientes entidades podrían se de interés en alguna aplicación:


  • Clientes
  • Cuentas Corrientes
  • Alumnos
  • Canciones de Rock
  • Interprete

Una instancia de una entidad es un individuo particular que pertenece a la case definida por esa entidad, por ejemplo:


  • El cliente Andres Trujillo
  • La cuenta Correinte numero 06-5467
  • La Alumna Beatriz Guido
  • Canciones "Never Lose"
  • Interprete Above and Beyond

Un relación es l conexión que vincula a dos o mas entidades. Por ejemplo si a ciertos Alumnos les gusta Canciones de Rock y si ese dato es importante par el diseño e importante saberlo, podemos definir una relación que asocia cada Alumno con 0,1 o mas Canciones de Rock y cada Canción de Rock con 0,1 o mas Alumnos. Esto se denomina un relación binaria porque asocia dos entidades.

Funcionalidad de las Relaciones


Para citar las funcionalidad de las relaciones dentro del modelo ER. debo decir que es un poco abstracto y a primera vista no lo puedan entender pero con los ejemplos se puede llegar a un concepto mas formalizado.

Una relación C entro dos entidades E1 y E2 es funcional, si asocia cada de E1 con a lo sumo (es decir 1:1) una instancia de E2. Por ejemplo si introducimos una relación llamada nació-en donde asocia las entidades Alumno y Ciudad, podemos decir que la relación es funcional ya que cada alumno nació a lo sumo en una ciudad, pero si decimos que un alumno A pudo haber nacido en otra ciudad que el Alumno B, entonces una ciudad puede tener de uno a mucho Alumnos y se convierte en un relación no funcioal. La funcionalidad de una relacion depende del lado del que se mire.

Diagramas de ER

Bueno el diagrama de un modelo ER es bastante sencilla, cada entidad se representa por un rectángulo, los atributos por elipses  y cada relación por medio de un rombo.

Analicemos el siguiente diagrama:


- Entidades: Tenemos dos entidades Alumno y Clase
- Atributos: La entidad Alumno tiene dos atributos DNI (identificador) y NOMBRE, la entidad Clase tiene también dos clases N°CLASE y NOMBRE_CLASE
- Relaciones: La relación PERTENECE describe que un alumno puede pertenece a mas de un clase  y que una clase puede tener mas de un alumno por es la relación es de mucho a mucho (N:M)


FUENTE