elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


  Mostrar Temas
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 22
1  Sistemas Operativos / Unix/Unix-Like / Expirar passwords inmediatamente en Unix en: 7 Mayo 2017, 00:37 am
Saludos

Necesito saber de que manera se pueden expirar las contraseña de un nuevo usuario, o sea creo el usuario, le doy una contraseña y la proxima vez que este se loguee oblique al usuario a cambiar la contraseña. Intenté usar el comando chage -d 0, pero este no expira la contraseña inmediatamente despues de la creacion del usuario sino que se tiene que hacer manualmente. Hay alguna manera de hacerlo automaticamente

De antemano gracias
2  Programación / PHP / envio de correo con función phpmailer en: 23 Octubre 2016, 20:54 pm
Saludos

Soy principiante en porgramación web y estoy haciendo una pequeña aplicación que debe de enviar un formulario por correo. Simplemente ingresas el correo al que deseas enviar y das clic en el boton. Instale correctamente el wamp y la libreria PHPMailer, pero no se cual sea el problema

.
Código
  1. <?php
  2.    include_once('phpmailer/class.phpmailer.php');
  3.    include_once('phpmailer/class.smtp.php');
  4.  
  5.    if(isset($_POST['correo'] && !empty($_POST['correo'])))
  6.    {
  7.      $mail = new PHPMailer();
  8.      $mail->IsSMTP();
  9.      $mail->SMTPAuth = true;
  10.      $mail->SMTPSecure = "ssl";
  11.      $mail->Host = "smtp.gmail.com";
  12.      $mail->Port = 465;
  13.  
  14.      $mail->Username ='xxxxxxxxx@gmail.com';
  15.      $mail->Password = '*********';
  16.  
  17.      //Agregar destinatario
  18.      $para = $_POST['correo'];
  19.      $mail->AddAddress($para);
  20.  
  21.      $mail->Send();
  22.    }
  23. ?>

no se cual puede ser el error, esta es la parte hecha en html donde se ingresa el correo al que deseas enviar

Código
  1. <!DOCTYPE html>
  2.  <head>
  3.    <meta charset="utf-8">
  4.    <title>
  5.      Pounce
  6.    </title>
  7.    <link rel="stylesheet" type="text/css" href="../css/styles.css" media="screen" />
  8.  </head>
  9.  <body>
  10.    <div class="bor">
  11.      <img src="../images/pounce.jpg" alt="" />
  12.    </div>
  13.    <div class="env-correo">
  14.    <FORM action="enviar.php" METHOD="POST">
  15.  
  16.      <p>
  17.        <h3>Escribe el correo al que deseas enviar una invitacion:</h3>
  18.      <INPUT name="correo" required>
  19.      </p>
  20.  
  21.     <INPUT type="submit" value="Enviar">
  22.    </FORM>
  23.  
  24.    </div>
  25.  </body>
  26. </html>
  27.  
3  Programación / Programación General / Lisp en: 16 Mayo 2016, 00:12 am
Saludos

Tengo el siguiente codigo en lisp que es un sistema experto para apagar un incendio. El
problema es que no entiendo muy bien el funcionamiento del programa. Primero esta defrule  inicio, y despues esta el initial-fact, pero no se que significa esta instrucción. Despues tenemos(assert (se-quema (read))), que lee el material que se esta quemando, pero apartir de alli ya no se como continua la ejecución del código. Si alguien me lo pudiera explicar se lo agradeceria

Código
  1. (deffacts inicio
  2.    (materiales A papel madera tela)
  3.    (materiales B aceite gas lubricante)
  4.    (materiales C magnesio sodio potasio)
  5.    (extintores A agua sustancia-quimica-seca)
  6.    (extintores B co2 sustancia-quimica-seca)
  7.    (extintores C co2 espuma)
  8. )
  9.  
  10. (defrule tipo-incendio
  11.    (se-quema ?material)
  12.    (materiales ?tipo $? ?material $?)
  13.    =>
  14.    (assert (incendio-tipo ?tipo))
  15.    (printout t "Hay un incendio de tipo " ?tipo crlf)
  16.    (printout t "De que es el extintor?" crlf)
  17.    (assert (tengo-extintor-de (read)))
  18. )
  19.  
  20. (defrule tipo-extintor
  21.    (tengo-extintor-de ?x)
  22.    (extintores ?tipo $? ?x $?)
  23.    =>
  24.    (assert (tengo-extintor ?tipo ?x))
  25.    (printout t "Tenemos un extintor de " ?x " que es de tipo " ?tipo crlf)
  26. )
  27.  
  28. (defrule puedo-apagar
  29.    (incendio-tipo ?tipo)
  30.    (tengo-extintor ?tipo ?x)
  31.    =>
  32.    (assert (puedo-apagar))
  33.    (printout t "El incendio se puede apagar con el extintor de " ?x crlf)
  34. )
  35.  
  36. (defrule inicio
  37.    (initial-fact)
  38.    =>
  39.    (printout t "Que se quema? " crlf)
  40.    (assert (se-quema (read)))
  41. )
4  Programación / Programación C/C++ / guardar una imagen bmp en: 20 Noviembre 2015, 17:53 pm
Saludos

Tengo el siguiente código en C++ que tiene una función llamada Bresenham(), que nos va a dibujar una(s) linea(s) simple en la ventana. Una vez que se dibujó la línea, el usuario debe de dar clic derecho en la ventana para que las líneas se guarden como una imagen bmp. Para esto tengo que crear dos estructuras: bmpInfoHeader y bmpFileHeader. El problema que tengo es que en la estructura de bmpFileHeader no se cómo calcular los campos de altura y anchura, y al momento de abrir la imagen no me aparece nada

Código
  1. #include<windows.h>
  2. #include<stdio.h>
  3. #include<stdlib.h>
  4. #include<stdint.h>
  5. #include<gl/glut.h>
  6.  
  7. typedef struct
  8. {
  9.    uint32_t tamanio;
  10.    uint16_t campoReservado;
  11.    uint32_t offset;
  12. }bmpFileHeader;
  13.  
  14. typedef struct
  15. {
  16.    uint32_t tamanioEncabezado;
  17.    uint32_t anchura;
  18.    uint32_t altura;
  19.    uint16_t planos;
  20.    uint16_t profundidadModeloColor;
  21.    uint32_t compresion;
  22.    uint32_t tamanioImagen;
  23.    uint32_t bmpx;
  24.    uint32_t bmpy;
  25.    uint32_t colores;
  26.    uint32_t impColores;
  27. }bmpInfoHeader;
  28.  
  29. float a[90000];
  30. int x0=0,y0=0,xf=0,yf=0;
  31. int puedeImprimir=0;
  32. FILE *bmp = NULL;
  33. unsigned char *imagen;
  34. bmpInfoHeader infoEncabezado;
  35. bmpFileHeader encabezadoArchivo;
  36.  
  37. void init(void);
  38. void putpixel(int x,int y);
  39. void Bresenham(int x0,int y0,int x1,int y1);
  40. void display(void);
  41. void onMotion(int x,int y);
  42. void onMouse(int button, int e, int x, int y);
  43. void onPassive(int x,int y);
  44. void crearEncabezadoInformacion(bmpInfoHeader *infoEncabezado);
  45. void crearEncabezadoArchivo(bmpFileHeader *encabezadoArchivo);
  46. void Guardar(bmpFileHeader *encabezadoArchivo,bmpInfoHeader *infoEncabezado);
  47.  
  48. int main()
  49. {
  50.    glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
  51.    glutInitWindowSize(300, 300);
  52.    glutInitWindowPosition(100, 100);
  53.    glutCreateWindow("Practica 2. Trazo de lineas con mouse");
  54.    init();
  55.    glutDisplayFunc(display);
  56.    glutMotionFunc(onMotion);
  57.    glutMouseFunc(onMouse);
  58.    glutPassiveMotionFunc(onPassive);
  59.    glutMainLoop();
  60. }
  61.  
  62. void init(void)
  63. {
  64.   glClearColor(1.0, 1.0, 1.0, 0.0);
  65.   glMatrixMode(GL_PROJECTION);
  66.   gluOrtho2D(0.0, 300.0, 0.0,300.0);
  67. }
  68.  
  69. void putpixel(int x,int y)
  70. {
  71.    glColor3f(0.0, 0.0,0.0);
  72.    glBegin(GL_POINTS);
  73.    glVertex2i(x,y);
  74.    glEnd();
  75. }
  76.  
  77. void Bresenham(int x0,int y0,int x1,int y1)
  78. {
  79.    int dx,dy,p,x,y,pasox = 1,pasoy = 1,dosDymenosDx,dosDy,i;
  80.    glColor3f(0.0,0.0,1.0);
  81.    dx = x1-x0;
  82. dy = y1-y0;
  83.  
  84.    if(dx < 0)
  85.       dx = dx*-1;
  86.    if(dy < 0)
  87.       dy = dy*-1;
  88.    if(x1 < x0)
  89.       pasox = -1;
  90.    if(y1 < y0)
  91.       pasoy = -1;
  92.  
  93.    x = x0;
  94.    y = y0;
  95. if( dx > dy )
  96.    {
  97.        putpixel(x,y);
  98.        p = 2 * dy - dx;
  99.        dosDymenosDx = 2 * ( dy - dx );
  100.        dosDy = 2 * dy;
  101.        for( i = 0; i < dx; i++ )
  102.        {
  103.             if( p >= 0 )
  104.             {
  105.                 y += pasoy;
  106.                 p += dosDymenosDx;
  107.             }
  108.             else
  109.                p += dosDy;
  110.             x += pasox;
  111.             putpixel(x,y);
  112.        }
  113.   }
  114.   else
  115.   {
  116.       putpixel(x,y);
  117.       p = 2*dx - dy;
  118.       dosDymenosDx = 2 * ( dx - dy );
  119.       dosDy = 2*dx;
  120.       for( i = 0; i < dy; i++ )
  121.       {
  122.           if( p >= 0 )
  123.           {
  124.               x += pasox;
  125.               p += dosDymenosDx;
  126.           }
  127.           else
  128.              p += dosDy;
  129.           y += pasoy;
  130.           putpixel(x,y);
  131.       }
  132.   }
  133.   glFlush();
  134. }
  135.  
  136. void display(void)
  137. {
  138.    glClear(GL_COLOR_BUFFER_BIT);
  139.    if(puedeImprimir==1)
  140.       glDrawPixels(300,300,GL_RGB,GL_UNSIGNED_BYTE,a);
  141.    Bresenham(x0,y0,xf,yf);
  142.    glFlush();
  143. }
  144.  
  145. void onMotion(int x,int y)
  146. {
  147.    xf = x;
  148.    yf = 300-y;
  149.    glutPostRedisplay();
  150. }
  151.  
  152. void onMouse(int button, int e, int x, int y)
  153. {
  154.    unsigned char media;
  155.    if((button == GLUT_LEFT_BUTTON) && (e == GLUT_DOWN))
  156.    {
  157.        puedeImprimir = 1;
  158.        x0 = xf = x;
  159.        y0 = yf = abs(300-y);
  160.    }
  161.    else if((button == GLUT_LEFT_BUTTON) && (e == GLUT_UP))
  162.       puedeImprimir = 0;
  163.    else if((button == GLUT_RIGHT_BUTTON) && (e == GLUT_UP))
  164.    {
  165.        //Abrir();
  166.        crearEncabezadoInformacion(&infoEncabezado);
  167.        Guardar(&encabezadoArchivo,&infoEncabezado);
  168.    }
  169. }
  170.  
  171. void crearEncabezadoInformacion(bmpInfoHeader *infoEncabezado)
  172. {
  173.    infoEncabezado = (bmpInfoHeader*)malloc(sizeof(bmpInfoHeader));
  174.  
  175.    infoEncabezado->tamanioEncabezado = sizeof(bmpInfoHeader);
  176.    infoEncabezado->anchura = ????;
  177.    infoEncabezado->altura = ????;
  178.    infoEncabezado->planos = 1;
  179.    infoEncabezado->profundidadModeloColor = 24;
  180.    infoEncabezado->compresion = BI_RGB;
  181.    infoEncabezado->tamanioImagen = ?????;
  182.    infoEncabezado->bmpx = 0;
  183.    infoEncabezado->bmpy = 0;
  184.    infoEncabezado->colores = 0;
  185.    infoEncabezado->impColores = 0;
  186. }
  187.  
  188. void Guardar(bmpFileHeader *encabezadoArchivo,unsigned char *imagen,bmpInfoHeader *info)
  189. {
  190.    uint16_t firma;
  191.    if((bmp = fopen("practica no. 7.bmp","wt"))!= NULL)
  192.    {
  193.        firma = 0x4D42;
  194.        encabezadoArchivo->campoReservado = 0;
  195.        encabezadoArchivo->offset = sizeof(bmpFileHeader)+sizeof(bmpInfoHeader)+2;
  196.        encabezadoArchivo->tamanio = info->tamanioImagen+sizeof(bmpFileHeader)+sizeof(bmpInfoHeader);
  197.        fwrite(&firma,sizeof(firma),1,bmp);
  198.        fwrite(encabezadoArchivo,sizeof(bmpFileHeader),1,bmp);
  199.        fwrite(info,sizeof(bmpInfoHeader),1,bmp);
  200.    }
  201.    else
  202.       printf("No se pudo crear fichero");
  203. }
  204.  
  205. void onPassive(int x,int y)
  206. {
  207.    glReadPixels(0.0,0.0,300.0,300.0,GL_RGB,GL_UNSIGNED_BYTE,a);
  208.    Bresenham(x0,y0,xf,yf);
  209. }
  210.  
  211.  

alguna idea de cómo arreglarlo?
5  Programación / Java / Multihilos en: 21 Septiembre 2015, 05:38 am
Saludos, estoy haciendo un programa el cuál tiene que correr e imprimir X número de procesos en una JTextArea, para esto utilizo un hilo de la siguiente manera

Código
  1. class Hilo implements Runnable,KeyListener
  2. {
  3. Nodo enEjecucion;
  4. private Hilo2 hilo2;
  5. private static final int CANICAS_X_LOTE = 5;
  6. private boolean puedeImprimir = true,sinPulsar = true;
  7. private static LinkedList<Nodo> listos = new LinkedList<Nodo>();
  8. private JTextArea areaTexto1,areaTexto2,areaTexto3,areaBloqueados;
  9. private JTextField campoTeclaPulsada;
  10.    private int numeroCanicas,id = 1;
  11.  
  12.    public Hilo(int numero,JTextArea a1,JTextArea a2,JTextArea a3,JTextField campoTeclax,JTextArea bloqueados)
  13. {
  14. numeroCanicas = numero;
  15. areaTexto1 = a1;
  16. areaTexto2 = a2;
  17. areaTexto3 = a3;
  18. areaBloqueados = bloqueados;
  19. campoTeclaPulsada = campoTeclax;
  20. campoTeclaPulsada.addKeyListener(this);
  21. }
  22.  
  23.    public void run()
  24.    {
  25. for(int i = 1;i <= CANICAS_X_LOTE;i++)
  26.       agregarCanica();
  27. ejecutar();
  28.    }
  29.  
  30.    public void agregarCanica()
  31.    {
  32.     Random t = new Random();
  33.     Nodo nodo = new Nodo();
  34. nodo.ID = id;
  35. nodo.Tiempo = (int)(t.nextDouble() * 5 + 1);
  36. nodo.tipoCanica = elegirTipoCanica();
  37. listos.add(nodo);
  38. id++;
  39.    }
  40.  
  41.    public void ejecutar()
  42. {
  43. long tiempo;
  44. while(!listos.isEmpty() && puedeImprimir)
  45. {
  46. imprimirListos();
  47. try
  48. {
  49. enEjecucion = listos.removeFirst();
  50. areaTexto1.setText(null);
  51. if(id <= numeroCanicas)
  52.   agregarCanica();
  53. imprimirListos();
  54. areaTexto2.append("ID: "+enEjecucion.ID+"\nTiempo: "+enEjecucion.Tiempo+"\nTipo: "+enEjecucion.tipoCanica+"\n\n");
  55. tiempo = (enEjecucion.Tiempo)*1000;
  56. Thread.sleep(tiempo);
  57. areaTexto2.setText(null);
  58.  
  59. if(sinPulsar)
  60.       areaTexto3.append("ID: "+enEjecucion.ID+"     Tiempo: "+enEjecucion.Tiempo+"    Tipo: "+enEjecucion.tipoCanica+"\n");
  61. }
  62. e.printStackTrace();
  63. }
  64. }
  65. areaTexto2.setText(null);
  66. }
  67.  
  68.    public void imprimirListos()
  69. {
  70. Iterator<Nodo> it = listos.iterator();
  71. while(it.hasNext())
  72. {
  73. Nodo canica = (Nodo)it.next();
  74.    areaTexto1.append("Canica: "+canica.ID+"\tTiempo: "+canica.Tiempo+"\n");
  75. }
  76. areaTexto1.append("\n");
  77. }
  78.  
  79.    public static String elegirTipoCanica()
  80. {
  81. int indice;
  82. Random n = new Random();
  83. String tipo[] = {"Ojo de gato","Transparente","Bolones","Trebol","Agatas","Vergel","Onix","Piojines","Tirito","Japonesa"};
  84. indice = (int)(n.nextDouble() * 9 + 0);
  85. return tipo[indice];
  86. }
  87.  
  88. public void ocurrioBotonazo(ActionEvent e)
  89. {
  90. hilo2 = new Hilo2(areaBloqueados,enEjecucion);
  91. hilo2.start();
  92. }
  93. }

El problema que tengo es que tengo que utilizar un evento de boton, una vez que oprima el boton se tiene que bloquear el proceso que se esta imprimiendo, yo por eso cree otro hilo al que le paso el JTextArea donde se va a imprimir el proceso bloqueado y el proceso.

Código
  1. public class Hilo2 extends Thread{
  2. private long espera;
  3. private Nodo bloqueado;
  4. private JTextArea areaBloqueados;
  5. private Random t = new Random();
  6.  
  7. public Hilo2(JTextArea area,Nodo enEjecucion)
  8. {
  9. bloqueado = enEjecucion;
  10. }
  11.  
  12. public void run()
  13. {
  14. try
  15. {
  16. bloqueado.Tiempo = (int)(t.nextDouble()* 7 + 5);
  17. espera = (bloqueado.Tiempo)*1000;
  18.    areaBloqueados.append("ID: "+bloqueado.ID+"     Espera: "+bloqueado.Tiempo+"    Tipo: "+bloqueado.tipoCanica+"\n");
  19.    Thread.sleep(espera);  
  20. }
  21. }
  22. }
  23.  

pero me lanza un error una vez que el hilo2 se ejecuta y no se cual es el problema

de antemano gracias
6  Programación / Java / duda con wait() y notify() en: 12 Septiembre 2015, 01:13 am
Saludos

Estoy haciendo el siguiente código en el que tengo dos hilos, cada uno de los cuales
va a imprimir un contador en un área de texto. En el código tengo un botón, el cual
se va a bloquear(deja de imprimir) si hago clic en el botón y se desbloquea una vez que haga clic otra
vez en el botón. Para esto traté de usar un wait() y un notify, pero creo que no los
estoy usando correctamente porque la primera vez que oprimo el botón si se bloquea
pero a la segunda no se desbloquea

Código
  1. import java.awt.*;
  2. import java.util.Random;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6. class Hilo extends Thread{
  7. private int cuenta = 0;
  8. private long pausa;
  9. private boolean puedeImprimir = true;
  10. private JTextArea areaTexto;
  11.  
  12. Hilo(long milisegundos,JTextArea cuadroTexto){
  13. pausa = milisegundos;
  14.    areaTexto = cuadroTexto;
  15. }
  16.  
  17. public void ocurrioBotonazo(){
  18.    if(puedeImprimir)
  19.       this.puedeImprimir = false;
  20.    else
  21.    {
  22.     this.puedeImprimir = true;
  23.     reanudar(this);
  24.    }
  25. }
  26.  
  27.  
  28. public synchronized void reanudar(Hilo hilo)
  29. {
  30. if(hilo.puedeImprimir)
  31.   hilo.notify();
  32. }
  33.  
  34. public void run()
  35. {
  36. while(this.puedeImprimir)
  37. {
  38. try
  39. {
  40. this.imprimirContador();
  41. Thread.sleep(pausa);
  42. this.cuenta++;
  43. }
  44. {
  45. e.printStackTrace();
  46. }
  47. }
  48. }
  49.  
  50. public void imprimirContador(){
  51. String tiempo;
  52.    tiempo = Integer.toString(cuenta);
  53.    areaTexto.setText(tiempo);
  54. }
  55. }
  56.  
  57. class Interfaz extends JFrame implements ActionListener{
  58. private JTextArea areaTexto,areaTexto2;
  59. private JButton boton;
  60. private Hilo hilo,hiloEvento;
  61.  
  62. Interfaz()
  63. {
  64. areaTexto = new JTextArea(10,7);
  65. areaTexto2 = new JTextArea(10,7);
  66. hilo = new Hilo(2000,areaTexto);
  67. hiloEvento = new Hilo(1000,areaTexto2);
  68. boton = new JButton("Pausar/Reanudar");
  69. this.getContentPane().add(boton,BorderLayout.SOUTH);
  70. this.getContentPane().add(areaTexto,BorderLayout.WEST);
  71. this.getContentPane().add(areaTexto2,BorderLayout.EAST);
  72.  
  73. hilo.start();
  74.        hiloEvento.start();
  75.  
  76. boton.addActionListener(this);
  77. }
  78.  
  79. public void actionPerformed(ActionEvent event)
  80. {
  81.     hiloEvento.ocurrioBotonazo();
  82. }
  83. }
  84.  
  85.  
  86. public class MensajesHilos {
  87.  
  88. public static void main(String[] args){
  89. Interfaz i = new Interfaz();
  90. i.setTitle("Hilos de Control");
  91. i.setBounds(200, 200, 300, 240);
  92. i.setVisible(true);
  93. }
  94. }
  95.  


gracias de antemano
7  Programación / Java / problema con setText("") en: 8 Septiembre 2015, 00:18 am
Saludos

Tengo el siguiente problema con un textArea con el que estoy trabajando. Primero, con el método append() imprimo en el area de texto unos datos que se encuentran en una lista, esto por medio de un ciclo while que va a iterar hasta que la lista se quede vacia. una vez que termina de recorrer cada uno de los elementos de la lista se elimina el primer elemento de la lista y se limpia el textArea, esto lo hice con setText(""). Y se regresa sucesivamente al ciclo while() cada vez que eliminas un elemento de la lista. El problema es que no se como borrar correctamente el textArea para que se pueda volver a escribir alli

Código
  1. public void x(){
  2. Nodo enEjecucion;
  3. while(!lista.isEmpty())
  4. {
  5. imprimirListos();
  6.                        enEjecucion = lista.getFirst();
  7. lista.remove(enEjecucion);
  8.  
  9. }
  10. }
  11.  
  12. public void imprimirListos()
  13. {
  14. Iterator<Nodo> it = lista.iterator();
  15. while(it.hasNext())
  16. {
  17. Nodo canica = (Nodo)it.next();
  18.    areaTexto1.append("Canica: "+canica.ID+"\tTiempo: "+canica.Tiempo+"\n");
  19. }
  20. areaTexto1.setText("");
  21. }

el setText("") que se supone deberia de limpiar no me deja volver a escribir nada en el area de texto. ¿cómo puedo solucionar esto??
8  Programación / Java / Uso del KeyListener en: 27 Agosto 2015, 22:50 pm
Saludos, tengo el siguiente código el cuál me imprime el ID y el tiempo de duración de X número de procesos. El problema es que tengo que agregarle un evento de teclado, una vez que está corriendo el programa, si yo oprimo la tecla E me tiene que salir un mensaje de error y continuar con la ejecucion de procesos, y si oprimo la tecla S la ejecucion para por completo. Busqué información de keyListener y trate de agregarle el evento de teclado como pude, pero no funciona correctamente y no sé que estoy haciendo mal

Código
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.util.Random;
  4.  
  5. import javax.swing.*;
  6.  
  7. class Hilo extends Thread{
  8. private boolean puedeImprimir;
  9. private int ID,numeroCanicas,Tiempo;
  10. private JTextArea areaTexto;
  11. private JTextField campoTexto;
  12.  
  13. public Hilo(JTextArea areaTextox,int numeroCanicasx)
  14. {
  15. areaTexto = areaTextox;
  16. puedeImprimir = true;
  17. numeroCanicas = numeroCanicasx;
  18. ID = 1;
  19. }
  20.  
  21. public void letraOprimida(KeyEvent e)
  22. {
  23. if(e.getKeyCode() == 69)
  24.       System.out.println("Error de");
  25. if(e.getKeyCode() == 83)
  26.   puedeImprimir = false;
  27. }
  28.  
  29. public void run()
  30. {
  31.    Random t = new Random();
  32. for(int i = 0;i < numeroCanicas;i++)
  33. {
  34.    try
  35.    {
  36. Tiempo = (int)(t.nextDouble() * 5 + 1);
  37. this.imprimirDatos(Tiempo,ID);
  38. Tiempo*=1000;
  39. Thread.sleep(Tiempo);
  40. this.ID++;
  41.    }
  42.    catch(InterruptedException e)
  43.    {
  44.     e.printStackTrace();
  45.    }
  46. }
  47. }
  48.  
  49. public void imprimirDatos(int Tiempo,int ID)
  50. {
  51. String tiempo,id;
  52. tiempo = Integer.toString(Tiempo);
  53. id = Integer.toString(ID);
  54. areaTexto.append("ID:        "+id+"\tTiempo:        "+tiempo+"\n");
  55. }
  56. }
  57.  
  58. class Interfaz extends JFrame implements KeyListener{
  59. private JTextArea areaTexto;
  60. private JLabel etiqueta;
  61. private int numeroCanicas;
  62. private Random n = new Random();
  63. private Hilo hilo;
  64.  
  65. public Interfaz()
  66. {
  67. numeroCanicas = (int)(n.nextDouble() * 10 + 1);
  68. System.out.println(""+numeroCanicas);
  69. areaTexto = new JTextArea(20,18);
  70. etiqueta = new JLabel("Número Canicas : "+numeroCanicas);
  71. etiqueta.setBounds(10, 11, 96, 14);
  72. this.getContentPane().add(areaTexto,BorderLayout.EAST);
  73. this.getContentPane().add(etiqueta,BorderLayout.NORTH);
  74. hilo = new Hilo(areaTexto,numeroCanicas);
  75.  
  76. hilo.start();
  77. addKeyListener(this);
  78. }
  79.  
  80. public void keyTyped(KeyEvent e) {
  81. hilo.letraOprimida(e);
  82. }
  83. public void keyPressed(KeyEvent e) {
  84. }
  85. public void keyReleased(KeyEvent arg0) {
  86. }
  87. }
  88.  
  89. public class Canicas {
  90.  
  91. public static void main(String[] args) {
  92. Interfaz interfaz = new Interfaz();
  93. interfaz.setTitle("Canicas");
  94. interfaz.setBounds(200, 200, 300, 300);
  95. interfaz.setVisible(true);
  96. }
  97. }

de antemano gracias
9  Programación / Java / problema con método sleep de Thread en: 19 Agosto 2015, 20:45 pm
Saludos

Tengo el siguiente hilo en el cual una vez que se ejecuta con el método run(), imprimo un dato y después hago una pausa con el método sleep, el problema es que el tiempo de pausa tiene que ser un número aleatorio entre 10 y 1, pero como el parámetros de sleep() debe ser tipo long, lo puse como 10000 y 1000:

Código
  1. tiempo = (long)(t.nextDouble() * 10000 + 1000);
despues de asingarle un numero aleatorio tengo que imprimir la variable tiempo, pero esta vez como entero

por ejemplo si quiero una pausa de 1 segundo o sea sleep(1000) quiero que me imprima tiempo = 1 seg, pero me imprime tiempo = 1000


¿cómo puedo solucionar esto???

de antemano gracias
10  Programación / Java / simulador de procesos en: 23 Junio 2015, 03:36 am
Saludos

Tengo el siguiente programa que se trata de un simulador de procesos

Tengo que introducir desde el teclado N procesos, estos seran los que conformen los lotes,
la capacidad máxima de un lote es de 5, y si el número de procesos que se introduce
excede esta cantidad, se conformará otro lote.Al terminar un lote se ejecuta.

La información a capturar por cada proceso es:

1)Nombre de Programador
2)Operación(+,-,*,/) y datos a realizar(validar operaciones)
3 Tiempo Máximo Estimado (validar, debe ser mayor a 0)

Los procesos se atenderán en el orden en que se capturaron. En pantalla debe mostrarse lo
siguiente:

a) Procesos en Espera
   1) Nombre de programador
   2) Tiempo Maximo Estimado
   3) Si hay lotes en espera, anotar el número de lotes pendientes.
b) Proceso en Ejecucion
   1) Se deberán mostrar todos los datos del proceso (Nombre, Operacion, tiempo max)
   2) Tiempo transcurrido de ejecución
   3) Tiempo restante por ejecutar.
c) Procesos Terminados
   1) Número de Programa
   2) Operación y datos
   3) Resultado de la operación.

Desde que se inicia la simulacion, se desplegará un reloj global, es decir, un contador
que lleve el tiempo desde el inicio del programa hasta que termine
El programa se pausa una vez que se hayan realizado todas las operaciones.

hasta ahora tengo ya la parte que captura la información de los procesos y los va
almacenando en un arreglo de tipo infoProceso, pero no se bien como tengo que usar hilos
(Threads) para que se vayan ejecutando los procesos, tengo que usar una clase para los lotes???

el codigo es el siguiente:

Código
  1. class infoProceso{
  2. String nombreProgramador;
  3. int numeroPrograma,tiempoMaximo,num1,num2,resultado;
  4. char operador;
  5. }
  6.  
  7. public class ProcesamientoPorLotes
  8. {
  9. public static int MAX = 5;
  10. public static infoProceso[] lote = new infoProceso[50];
  11. public static void main(String[] args)
  12. {
  13. int numProcesos;
  14. Scanner entradaTeclado = new Scanner(System.in);
  15. System.out.println("Dame el numero de procesos: ");
  16. numProcesos = entradaTeclado.nextInt();
  17. entradaTeclado.close();
  18. capturarInformacion(numProcesos);
  19. }
  20.  
  21. public static void capturarInformacion(int numProcesos)
  22. {
  23. String nombre = "",operador = "";
  24. boolean opValido,tiempoValido = true,idRepetido = false;
  25. int tiempo,numero,i,j;
  26.        for(i = numProcesos;i > 0;i--)
  27.        {
  28. for(j = 0;j < MAX;j++)
  29. {
  30. Scanner teclado = new Scanner(System.in);
  31. //ingresar nombre del programador
  32. System.out.println("Dame Nombre de Programador: ");
  33. nombre = teclado.nextLine();
  34. lote[j].nombreProgramador = nombre;
  35. //ingresar la operación
  36. do
  37. {
  38. System.out.println("Dame la Operacion: ");
  39. operador = teclado.nextLine();
  40. teclado.close();
  41. opValido = validarOperador(operador);
  42. }while(!opValido);
  43. capturarOperacion(operador,j);
  44. //ingresar el máximo tiempo estimado
  45. do
  46. {
  47. System.out.println("Dame el tiempo maximo estimado: ");
  48. tiempo = teclado.nextInt();
  49. teclado.close();
  50. tiempoValido = validarTiempo(tiempo);
  51. }while(!tiempoValido);
  52. lote[j].tiempoMaximo = tiempo;
  53. //ingresar ID
  54. do
  55. {
  56.    System.out.println("Dame el numero de programa: ");
  57.    numero = teclado.nextInt();
  58.    teclado.close();
  59.    verificarID(numero);
  60. }while(idRepetido);
  61. }
  62. //
  63. }
  64. }
  65.  
  66. public static boolean verificarID(int numero)
  67. {
  68. boolean esRepetido = false;
  69. return esRepetido;
  70. }
  71.  
  72. public static boolean validarOperador(String op)
  73. {
  74. boolean esValido;
  75. char operador = op.charAt(0);
  76. if(operador == '+' || operador == '-' || operador == '*' || operador == '/')
  77.   esValido = true;
  78. else
  79.   esValido = false;
  80. return esValido;
  81. }
  82.  
  83. public static boolean validarTiempo(int tiempo)
  84. {
  85. boolean esValido = true;
  86. if(tiempo <= 0)
  87. {
  88.        System.out.println("Tiempo invalido (debe ser mayor a 0).\nIntroducir dato nuevamente");
  89.        esValido = false;
  90. }
  91. return esValido;
  92. }
  93.  
  94. public static void capturarOperacion(String op,int j){
  95. char operador = op.charAt(0);
  96. int num1,num2;
  97. Scanner entrada1 = new Scanner(System.in);
  98. Scanner entrada2 = new Scanner(System.in);
  99. System.out.println("Dame el numero1: ");
  100.        num1 = entrada1.nextInt();
  101.        System.out.println("Dame el numero2: ");
  102.        num2 = entrada2.nextInt();
  103.        lote[j].num1 = num1;
  104.    lote[j].num2 = num2;
  105.    lote[j].operador = operador;
  106. switch(operador)
  107. {
  108.    case '+':  
  109.       lote[j].resultado = lote[j].num1+lote[j].num2;
  110.       break;
  111.    case '-':
  112.       lote[j].resultado = lote[j].num1-lote[j].num2;
  113.       break;
  114.    case '*':
  115.       lote[j].resultado = lote[j].num1*lote[j].num2;
  116.       break;
  117.    case '/':
  118.       lote[j].resultado = lote[j].num1/lote[j].num2;
  119.       break;
  120. }
  121. entrada1.close();
  122. entrada2.close();
  123. }
  124. }
  125.  

de antemano gracias
Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 22
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines