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 - m@o_614

#1
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
PHP / envio de correo con función phpmailer
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 (php) [Seleccionar]
<?php
    
include_once('phpmailer/class.phpmailer.php');
    include_once(
'phpmailer/class.smtp.php');

    if(isset(
$_POST['correo'] && !empty($_POST['correo'])))
    {
      
$mail = new PHPMailer();
      
$mail->IsSMTP();
      
$mail->SMTPAuth true;
      
$mail->SMTPSecure "ssl";
      
$mail->Host "smtp.gmail.com";
      
$mail->Port 465;

      
$mail->Username ='xxxxxxxxx@gmail.com';
      
$mail->Password '*********';

      
//Agregar destinatario
      
$para $_POST['correo'];
      
$mail->AddAddress($para);

      
$mail->Send();
    }
 
?>


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 (html4strict) [Seleccionar]
<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <title>
     Pounce
   </title>
   <link rel="stylesheet" type="text/css" href="../css/styles.css" media="screen" />
 </head>
 <body>
   <div class="bor">
     <img src="../images/pounce.jpg" alt="" />
   </div>
   <div class="env-correo">
   <FORM action="enviar.php" METHOD="POST">

     <p>
       <h3>Escribe el correo al que deseas enviar una invitacion:</h3>
     <INPUT name="correo" required>
     </p>

    <INPUT type="submit" value="Enviar">
   </FORM>

   </div>
 </body>
</html>
#3
Programación General / Lisp
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 (lisp) [Seleccionar]
(deffacts inicio
    (materiales A papel madera tela)
    (materiales B aceite gas lubricante)
    (materiales C magnesio sodio potasio)
    (extintores A agua sustancia-quimica-seca)
    (extintores B co2 sustancia-quimica-seca)
    (extintores C co2 espuma)
)

(defrule tipo-incendio
    (se-quema ?material)
    (materiales ?tipo $? ?material $?)
    =>
    (assert (incendio-tipo ?tipo))
    (printout t "Hay un incendio de tipo " ?tipo crlf)
    (printout t "De que es el extintor?" crlf)
    (assert (tengo-extintor-de (read)))
)

(defrule tipo-extintor
    (tengo-extintor-de ?x)
    (extintores ?tipo $? ?x $?)
    =>
    (assert (tengo-extintor ?tipo ?x))
    (printout t "Tenemos un extintor de " ?x " que es de tipo " ?tipo crlf)
)

(defrule puedo-apagar
    (incendio-tipo ?tipo)
    (tengo-extintor ?tipo ?x)
    =>
    (assert (puedo-apagar))
    (printout t "El incendio se puede apagar con el extintor de " ?x crlf)
)

(defrule inicio
    (initial-fact)
    =>
    (printout t "Que se quema? " crlf)
    (assert (se-quema (read)))
)

#4
Programación C/C++ / guardar una imagen bmp
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 (cpp) [Seleccionar]
#include<windows.h>
#include<stdio.h>
#include<stdlib.h>
#include<stdint.h>
#include<gl/glut.h>

typedef struct
{
   uint32_t tamanio;
   uint16_t campoReservado;
   uint32_t offset;
}bmpFileHeader;

typedef struct
{
   uint32_t tamanioEncabezado;
   uint32_t anchura;
   uint32_t altura;
   uint16_t planos;
   uint16_t profundidadModeloColor;
   uint32_t compresion;
   uint32_t tamanioImagen;
   uint32_t bmpx;
   uint32_t bmpy;
   uint32_t colores;
   uint32_t impColores;
}bmpInfoHeader;

float a[90000];
int x0=0,y0=0,xf=0,yf=0;
int puedeImprimir=0;
FILE *bmp = NULL;
unsigned char *imagen;
bmpInfoHeader infoEncabezado;
bmpFileHeader encabezadoArchivo;

void init(void);
void putpixel(int x,int y);
void Bresenham(int x0,int y0,int x1,int y1);
void display(void);
void onMotion(int x,int y);
void onMouse(int button, int e, int x, int y);
void onPassive(int x,int y);
void crearEncabezadoInformacion(bmpInfoHeader *infoEncabezado);
void crearEncabezadoArchivo(bmpFileHeader *encabezadoArchivo);
void Guardar(bmpFileHeader *encabezadoArchivo,bmpInfoHeader *infoEncabezado);

int main()
{
   glutInitDisplayMode(GLUT_SINGLE|GLUT_RGB|GLUT_DEPTH);
   glutInitWindowSize(300, 300);
   glutInitWindowPosition(100, 100);
   glutCreateWindow("Practica 2. Trazo de lineas con mouse");
   init();
   glutDisplayFunc(display);
   glutMotionFunc(onMotion);
   glutMouseFunc(onMouse);
   glutPassiveMotionFunc(onPassive);
   glutMainLoop();
}

void init(void)
{
  glClearColor(1.0, 1.0, 1.0, 0.0);
  glMatrixMode(GL_PROJECTION);
  gluOrtho2D(0.0, 300.0, 0.0,300.0);
}

void putpixel(int x,int y)
{
   glColor3f(0.0, 0.0,0.0);
   glBegin(GL_POINTS);
   glVertex2i(x,y);
   glEnd();
}

void Bresenham(int x0,int y0,int x1,int y1)
{
   int dx,dy,p,x,y,pasox = 1,pasoy = 1,dosDymenosDx,dosDy,i;
   glColor3f(0.0,0.0,1.0);
   dx = x1-x0;
dy = y1-y0;

   if(dx < 0)
      dx = dx*-1;
   if(dy < 0)
      dy = dy*-1;
   if(x1 < x0)
      pasox = -1;
   if(y1 < y0)
      pasoy = -1;

   x = x0;
   y = y0;
if( dx > dy )
   {
       putpixel(x,y);
       p = 2 * dy - dx;
       dosDymenosDx = 2 * ( dy - dx );
       dosDy = 2 * dy;
       for( i = 0; i < dx; i++ )
       {
            if( p >= 0 )
            {
                y += pasoy;
                p += dosDymenosDx;
            }
            else
               p += dosDy;
            x += pasox;
            putpixel(x,y);
       }
  }
  else
  {
      putpixel(x,y);
      p = 2*dx - dy;
      dosDymenosDx = 2 * ( dx - dy );
      dosDy = 2*dx;
      for( i = 0; i < dy; i++ )
      {
          if( p >= 0 )
          {
              x += pasox;
              p += dosDymenosDx;
          }
          else
             p += dosDy;
          y += pasoy;
          putpixel(x,y);
      }
  }
  glFlush();
}

void display(void)
{
   glClear(GL_COLOR_BUFFER_BIT);
   if(puedeImprimir==1)
      glDrawPixels(300,300,GL_RGB,GL_UNSIGNED_BYTE,a);
   Bresenham(x0,y0,xf,yf);
   glFlush();
}

void onMotion(int x,int y)
{
   xf = x;
   yf = 300-y;
   glutPostRedisplay();
}

void onMouse(int button, int e, int x, int y)
{
   unsigned char media;
   if((button == GLUT_LEFT_BUTTON) && (e == GLUT_DOWN))
   {
       puedeImprimir = 1;
       x0 = xf = x;
       y0 = yf = abs(300-y);
   }
   else if((button == GLUT_LEFT_BUTTON) && (e == GLUT_UP))
      puedeImprimir = 0;
   else if((button == GLUT_RIGHT_BUTTON) && (e == GLUT_UP))
   {
       //Abrir();
       crearEncabezadoInformacion(&infoEncabezado);
       Guardar(&encabezadoArchivo,&infoEncabezado);
   }
}

void crearEncabezadoInformacion(bmpInfoHeader *infoEncabezado)
{
   infoEncabezado = (bmpInfoHeader*)malloc(sizeof(bmpInfoHeader));

   infoEncabezado->tamanioEncabezado = sizeof(bmpInfoHeader);
   infoEncabezado->anchura = ????;
   infoEncabezado->altura = ????;
   infoEncabezado->planos = 1;
   infoEncabezado->profundidadModeloColor = 24;
   infoEncabezado->compresion = BI_RGB;
   infoEncabezado->tamanioImagen = ?????;
   infoEncabezado->bmpx = 0;
   infoEncabezado->bmpy = 0;
   infoEncabezado->colores = 0;
   infoEncabezado->impColores = 0;
}

void Guardar(bmpFileHeader *encabezadoArchivo,unsigned char *imagen,bmpInfoHeader *info)
{
   uint16_t firma;
   if((bmp = fopen("practica no. 7.bmp","wt"))!= NULL)
   {
       firma = 0x4D42;
       encabezadoArchivo->campoReservado = 0;
       encabezadoArchivo->offset = sizeof(bmpFileHeader)+sizeof(bmpInfoHeader)+2;
       encabezadoArchivo->tamanio = info->tamanioImagen+sizeof(bmpFileHeader)+sizeof(bmpInfoHeader);
       fwrite(&firma,sizeof(firma),1,bmp);
       fwrite(encabezadoArchivo,sizeof(bmpFileHeader),1,bmp);
       fwrite(info,sizeof(bmpInfoHeader),1,bmp);
   }
   else
      printf("No se pudo crear fichero");
}

void onPassive(int x,int y)
{
   glReadPixels(0.0,0.0,300.0,300.0,GL_RGB,GL_UNSIGNED_BYTE,a);
   Bresenham(x0,y0,xf,yf);
}



alguna idea de cómo arreglarlo?
#5
Java / Multihilos
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 (java) [Seleccionar]
class Hilo implements Runnable,KeyListener
{
Nodo enEjecucion;
private Hilo2 hilo2;
private static final int CANICAS_X_LOTE = 5;
private boolean puedeImprimir = true,sinPulsar = true;
private static LinkedList<Nodo> listos = new LinkedList<Nodo>();
private JTextArea areaTexto1,areaTexto2,areaTexto3,areaBloqueados;
private JTextField campoTeclaPulsada;
    private int numeroCanicas,id = 1;
   
    public Hilo(int numero,JTextArea a1,JTextArea a2,JTextArea a3,JTextField campoTeclax,JTextArea bloqueados)
{
numeroCanicas = numero;
areaTexto1 = a1;
areaTexto2 = a2;
areaTexto3 = a3;
areaBloqueados = bloqueados;
campoTeclaPulsada = campoTeclax;
campoTeclaPulsada.addKeyListener(this);
}
   
    public void run()
    {
for(int i = 1;i <= CANICAS_X_LOTE;i++)
       agregarCanica();
ejecutar();
    }
   
    public void agregarCanica()
    {
    Random t = new Random();
    Nodo nodo = new Nodo();
nodo.ID = id;
nodo.Tiempo = (int)(t.nextDouble() * 5 + 1);
nodo.tipoCanica = elegirTipoCanica();
listos.add(nodo);
id++;
    }
   
    public void ejecutar()
{
long tiempo;
while(!listos.isEmpty() && puedeImprimir)
{
imprimirListos();
try
{
enEjecucion = listos.removeFirst();
areaTexto1.setText(null);
if(id <= numeroCanicas)
   agregarCanica();
imprimirListos();
areaTexto2.append("ID: "+enEjecucion.ID+"\nTiempo: "+enEjecucion.Tiempo+"\nTipo: "+enEjecucion.tipoCanica+"\n\n");
tiempo = (enEjecucion.Tiempo)*1000;
Thread.sleep(tiempo);
areaTexto2.setText(null);

if(sinPulsar)
       areaTexto3.append("ID: "+enEjecucion.ID+"     Tiempo: "+enEjecucion.Tiempo+"    Tipo: "+enEjecucion.tipoCanica+"\n");
}
catch(InterruptedException e){
e.printStackTrace();
}
}
areaTexto2.setText(null);
}
   
    public void imprimirListos()
{
Iterator<Nodo> it = listos.iterator();
while(it.hasNext())
{
Nodo canica = (Nodo)it.next();
    areaTexto1.append("Canica: "+canica.ID+"\tTiempo: "+canica.Tiempo+"\n");
}
areaTexto1.append("\n");
}
   
    public static String elegirTipoCanica()
{
int indice;
Random n = new Random();
String tipo[] = {"Ojo de gato","Transparente","Bolones","Trebol","Agatas","Vergel","Onix","Piojines","Tirito","Japonesa"};
indice = (int)(n.nextDouble() * 9 + 0);
return tipo[indice];
}

public void ocurrioBotonazo(ActionEvent e)
{
hilo2 = new Hilo2(areaBloqueados,enEjecucion);
hilo2.start();
}
}


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 (java) [Seleccionar]
public class Hilo2 extends Thread{
private long espera;
private Nodo bloqueado;
private JTextArea areaBloqueados;
private Random t = new Random();

public Hilo2(JTextArea area,Nodo enEjecucion)
{
bloqueado = enEjecucion;
}

public void run()
{
try
{
bloqueado.Tiempo = (int)(t.nextDouble()* 7 + 5);
espera = (bloqueado.Tiempo)*1000;
    areaBloqueados.append("ID: "+bloqueado.ID+"     Espera: "+bloqueado.Tiempo+"    Tipo: "+bloqueado.tipoCanica+"\n");
    Thread.sleep(espera); 
}
catch(InterruptedException s){}
}
}


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

de antemano gracias
#6
Java / duda con wait() y notify()
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 (java) [Seleccionar]
import java.awt.*;
import java.util.Random;
import java.awt.event.*;
import javax.swing.*;

class Hilo extends Thread{
private int cuenta = 0;
private long pausa;
private boolean puedeImprimir = true;
private JTextArea areaTexto;

Hilo(long milisegundos,JTextArea cuadroTexto){
pausa = milisegundos;
    areaTexto = cuadroTexto;
}

public void ocurrioBotonazo(){
    if(puedeImprimir)
       this.puedeImprimir = false;
    else
    {
    this.puedeImprimir = true;
    reanudar(this);
    }
}


public synchronized void reanudar(Hilo hilo)
{
if(hilo.puedeImprimir)
   hilo.notify();
}

public void run()
{
while(this.puedeImprimir)
{
try
{
this.imprimirContador();
Thread.sleep(pausa);
this.cuenta++;
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}

public void imprimirContador(){
String tiempo;
    tiempo = Integer.toString(cuenta);
    areaTexto.setText(tiempo);
}
}

class Interfaz extends JFrame implements ActionListener{
private JTextArea areaTexto,areaTexto2;
private JButton boton;
private Hilo hilo,hiloEvento;

Interfaz()
{
areaTexto = new JTextArea(10,7);
areaTexto2 = new JTextArea(10,7);
hilo = new Hilo(2000,areaTexto);
hiloEvento = new Hilo(1000,areaTexto2);
boton = new JButton("Pausar/Reanudar");
this.getContentPane().add(boton,BorderLayout.SOUTH);
this.getContentPane().add(areaTexto,BorderLayout.WEST);
this.getContentPane().add(areaTexto2,BorderLayout.EAST);

hilo.start();
        hiloEvento.start();
       
boton.addActionListener(this);
}

public void actionPerformed(ActionEvent event)
{
      hiloEvento.ocurrioBotonazo();
}
}


public class MensajesHilos {

public static void main(String[] args){
Interfaz i = new Interfaz();
i.setTitle("Hilos de Control");
i.setBounds(200, 200, 300, 240);
i.setVisible(true);
}
}



gracias de antemano
#7
Java / Re: problema con setText("")
12 Septiembre 2015, 00:42 AM
muchas gracias por sus respuestas con cambiarle el setText("") por setText(null) fue suficiente ;D
#8
Java / problema con setText("")
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 (java) [Seleccionar]
public void x(){
Nodo enEjecucion;
while(!lista.isEmpty())
{
imprimirListos();
                        enEjecucion = lista.getFirst();
lista.remove(enEjecucion);

}
}

public void imprimirListos()
{
Iterator<Nodo> it = lista.iterator();
while(it.hasNext())
{
Nodo canica = (Nodo)it.next();
    areaTexto1.append("Canica: "+canica.ID+"\tTiempo: "+canica.Tiempo+"\n");
}
areaTexto1.setText("");
}


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??
#9
Java / Uso del KeyListener
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 (java) [Seleccionar]
import java.awt.*;
import java.awt.event.*;
import java.util.Random;

import javax.swing.*;

class Hilo extends Thread{
private boolean puedeImprimir;
private int ID,numeroCanicas,Tiempo;
private JTextArea areaTexto;
private JTextField campoTexto;

public Hilo(JTextArea areaTextox,int numeroCanicasx)
{
areaTexto = areaTextox;
puedeImprimir = true;
numeroCanicas = numeroCanicasx;
ID = 1;
}

public void letraOprimida(KeyEvent e)
{
if(e.getKeyCode() == 69)
       System.out.println("Error de");
if(e.getKeyCode() == 83)
   puedeImprimir = false;
}

public void run()
{
    Random t = new Random();
for(int i = 0;i < numeroCanicas;i++)
{
    try
    {
Tiempo = (int)(t.nextDouble() * 5 + 1);
this.imprimirDatos(Tiempo,ID);
Tiempo*=1000;
Thread.sleep(Tiempo);
this.ID++;
    }
    catch(InterruptedException e)
    {
    e.printStackTrace();
    }
}
}

public void imprimirDatos(int Tiempo,int ID)
{
String tiempo,id;
tiempo = Integer.toString(Tiempo);
id = Integer.toString(ID);
areaTexto.append("ID:        "+id+"\tTiempo:        "+tiempo+"\n");
}
}

class Interfaz extends JFrame implements KeyListener{
private JTextArea areaTexto;
private JLabel etiqueta;
private int numeroCanicas;
private Random n = new Random();
private Hilo hilo;

public Interfaz()
{
numeroCanicas = (int)(n.nextDouble() * 10 + 1);
System.out.println(""+numeroCanicas);
areaTexto = new JTextArea(20,18);
etiqueta = new JLabel("Número Canicas : "+numeroCanicas);
etiqueta.setBounds(10, 11, 96, 14);
this.getContentPane().add(areaTexto,BorderLayout.EAST);
this.getContentPane().add(etiqueta,BorderLayout.NORTH);
hilo = new Hilo(areaTexto,numeroCanicas);

hilo.start();
addKeyListener(this);
}

public void keyTyped(KeyEvent e) {
hilo.letraOprimida(e);
}
public void keyPressed(KeyEvent e) {
}
public void keyReleased(KeyEvent arg0) {
}
}

public class Canicas {

public static void main(String[] args) {
Interfaz interfaz = new Interfaz();
interfaz.setTitle("Canicas");
interfaz.setBounds(200, 200, 300, 300);
interfaz.setVisible(true);
}
}


de antemano gracias
#10
Java / problema con método sleep de Thread
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 (java) [Seleccionar]
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