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ú

Temas - Mitgus

#1
Programación C/C++ / [C++] Portabilidad GUI
21 Julio 2013, 22:47 PM
Hola. Recientemente me ha entrado el bicho por aprender C++ (vengo de Java) y quería saber qué opciones tengo para hacer mis aplicaciones GUI multiplataforma, es decir Toolkits GUI.

Mi objetivo es que no tenga que modificar nada del código para poderlo correr en otra plataforma. He leído que el más portable es WxWidgets , seguido de QT. Me agrada WxWidget porque toma la interfaz nativa del sistema.

Mis opciones:

  • gtkmm (GTK3+)
  • QT
  • WxWidgets

    Si conocen más que sean buenas, agradecería que las listen.


    ¿Cuál toolkit es conveniente usar?



    Salu2.
#2
Hola. Últimamente, he tenido inconvenientes al actualizar los repos de mi Debian Wheezy 7.1. Aquí les dejo lo que bota la consola y mi sources.list

  • Sources:

    # Repositorios Oficiales
    deb http://ftp.debian.org/debian/ wheezy main contrib non-free
    deb-src http://ftp.debian.org/debian/ wheezy main contrib non-free
    #Repositorios Seguridad
    deb http://security.debian.org/ wheezy/updates main contrib non-free
    deb-src http://ftp.debian.org/debian/ wheezy/updates main contrib non-free
    # wheezy-updates
    deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
    deb-src http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
    # Repositorios Backports
    deb http://mirrors.kernel.org/debian/ wheezy-backports main contrib non-free
    deb-src http://mirrors.kernel.org/debian/ wheezy-backports main contrib non-free
    deb http://ftp.debian.org/debian/ wheezy-backports main


  • Terminal:

    Obj http://security.debian.org wheezy/updates Release.gpg                     
    Obj http://mirrors.kernel.org wheezy-backports Release.gpg                     
    Obj http://ftp.debian.org wheezy Release.gpg           
    Obj http://security.debian.org wheezy/updates Release                         
    Obj http://mirrors.kernel.org wheezy-backports Release                         
    Ign http://ftp.debian.org wheezy/updates Release.gpg                         
    Obj http://security.debian.org wheezy/updates/main i386 Packages               
    Obj http://mirrors.kernel.org wheezy-backports/main Sources                   
    Obj http://ftp.debian.org wheezy-updates Release.gpg   
    Obj http://security.debian.org wheezy/updates/contrib i386 Packages           
    Obj http://mirrors.kernel.org wheezy-backports/contrib Sources                 
    Obj http://ftp.debian.org wheezy-backports Release.gpg
    Obj http://security.debian.org wheezy/updates/non-free i386 Packages           
    Obj http://mirrors.kernel.org wheezy-backports/non-free Sources               
    Obj http://ftp.debian.org wheezy Release               
    Obj http://security.debian.org wheezy/updates/contrib Translation-en           
    Obj http://mirrors.kernel.org wheezy-backports/main i386 Packages             
    Ign http://ftp.debian.org wheezy/updates Release       
    Obj http://security.debian.org wheezy/updates/main Translation-en             
    Obj http://ftp.debian.org wheezy-updates Release                               
    Obj http://security.debian.org wheezy/updates/non-free Translation-en         
    Obj http://ftp.debian.org wheezy-backports Release                             
    Obj http://mirrors.kernel.org wheezy-backports/contrib i386 Packages         
    Obj http://mirrors.kernel.org wheezy-backports/non-free i386 Packages         
    Obj http://mirrors.kernel.org wheezy-backports/contrib Translation-en
    Obj http://ftp.debian.org wheezy/main Sources         
    Obj http://mirrors.kernel.org wheezy-backports/main Translation-en         
    Obj http://mirrors.kernel.org wheezy-backports/non-free Translation-en     
    Obj http://ftp.debian.org wheezy/contrib Sources       
    Obj http://ftp.debian.org wheezy/non-free Sources
    Obj http://ftp.debian.org wheezy/main i386 Packages
    Obj http://ftp.debian.org wheezy/contrib i386 Packages
    Obj http://ftp.debian.org wheezy/non-free i386 Packages
    Obj http://ftp.debian.org wheezy/contrib Translation-en
    Obj http://ftp.debian.org wheezy/main Translation-es
    Obj http://ftp.debian.org wheezy/main Translation-en
    Obj http://ftp.debian.org wheezy/non-free Translation-en
    Obj http://ftp.debian.org wheezy-updates/main Sources
    Obj http://ftp.debian.org wheezy-updates/contrib Sources
    Obj http://ftp.debian.org wheezy-updates/non-free Sources
    Obj http://ftp.debian.org wheezy-updates/main i386 Packages
    Obj http://ftp.debian.org wheezy-updates/contrib i386 Packages
    Obj http://ftp.debian.org wheezy-updates/non-free i386 Packages
    Obj http://ftp.debian.org wheezy-updates/contrib Translation-en
    Obj http://ftp.debian.org wheezy-updates/main Translation-en
    Obj http://ftp.debian.org wheezy-updates/non-free Translation-en
    Obj http://ftp.debian.org wheezy-backports/main i386 Packages
    Obj http://ftp.debian.org wheezy-backports/main Translation-en
    [b]Err http://ftp.debian.org wheezy/updates/main Sources
      404  Not Found [IP: 130.89.148.12 80]
    Err http://ftp.debian.org wheezy/updates/contrib Sources
      404  Not Found [IP: 130.89.148.12 80]
    Err http://ftp.debian.org wheezy/updates/non-free Sources
      404  Not Found [IP: 130.89.148.12 80]
    W: Imposible obtener http://ftp.debian.org/debian/dists/wheezy/updates/main/source/Sources  404  Not Found [IP: 130.89.148.12 80]

    W: Imposible obtener http://ftp.debian.org/debian/dists/wheezy/updates/contrib/source/Sources  404  Not Found [IP: 130.89.148.12 80]

    W: Imposible obtener http://ftp.debian.org/debian/dists/wheezy/updates/non-free/source/Sources  404  Not Found [IP: 130.89.148.12 80]

    E: Some index files failed to download. They have been ignored, or old ones used instead.[/b]



    Gracias de antemano. Un saludo.
#3
Pues ésa es mi duda. La cosa es que tengo bastante info en W8 y no tengo un hdd externo para poder salvarla, en caso BT5 joda el grub como leí por allí..

Si se preguntan por qué coño no lo instalo en una VM, pues la razón es sencilla. Tengo 2GB de ram (core i3) y me corre como el culo  ;D

¿Alguien ya lo ha intentado?


Saludos.
#4
Seguridad / ¿Se puede evadir el UAC?
22 Junio 2013, 14:49 PM
Buenas, tengo un proyecto en mente y analizándolo, me vino esta pregunta:

¿Es posible evadir/desactivar implícitamente el UAC para instalar "algo" en una PC Windows sin permisos?

Leí sobre un bug en el kernel en el 2010, pero creo que ha sido parchado.


Saludos.
#5
Java / [JavaFX] Gmail King Bomber.
21 Junio 2013, 01:27 AM
Hola,

Les dejo una sencilla aplicación para spamear cuentas de correo. El code es sencillo, un Thread hace la tarea y captura las excepciones mostrando un cuadro de diálogo. Los botones y demás controles se desactivan mientras esté operativa la tarea (envío de emails). El botón borrar, como su nombre lo dice borra todos los campos a excepción del email y password atacante.


Imagen en funcionamiento:



Versión 1.0. Con un código más sencillo, sin tantos catch múltiples y ahora el trabajo por medio de un thread.

Código (=java) [Seleccionar]

import java.util.Date;
import java.util.Properties;

// Librerias JavaFX
import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

// librerias JavaMail
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import javax.swing.JOptionPane;


public class GmailKingBomber extends Application {

Label lblEmail,lblAsunto,lblMensaje,cantMensajes,lblActividad,lblEmailSender,lblPassSender;
Button btnOk,btnBorrar;
TextField txtEmail,txtAsunto,txtcantMensajes,txtEmailSender;
PasswordField txtPassSender;
TextArea txrMensaje,txrActividad;
public void start(Stage stage){

    Group root = new Group(); // crea un panel "Grupo" (ver doc)
    Scene escena = new Scene(root,550,420); // se lo asigna a la escena y configura sizes
   
    // email
    lblEmail = new Label("Email");
    lblEmail.setTextFill(Color.web("#0076a3"));
    lblEmail.setLayoutX(8);
    lblEmail.setLayoutY(8);
    txtEmail = new TextField("");
    txtEmail.setFocusTraversable(true);
    txtEmail.setPrefSize(150,25);
    txtEmail.setLayoutX(20);
    txtEmail.setLayoutY(28);
    // asunto
    lblAsunto = new Label("Asunto");
    lblAsunto.setTextFill(Color.web("#0076a3"));
    lblAsunto.setLayoutX(8);
    lblAsunto.setLayoutY(55);
    txtAsunto = new TextField("");
    txtAsunto.setFocusTraversable(true);
    txtAsunto.setPrefSize(150,25);
    txtAsunto.setLayoutX(20);
    txtAsunto.setLayoutY(75);
    // mensaje
    lblMensaje = new Label("Mensaje");
    lblMensaje.setTextFill(Color.web("#0076a3"));
    lblMensaje.setLayoutX(8);
    lblMensaje.setLayoutY(101);
    txrMensaje = new TextArea("");
    txrMensaje.setFocusTraversable(true);
    txrMensaje.setPrefSize(150,80);
    txrMensaje.setLayoutX(20);
    txrMensaje.setLayoutY(126);
    // cantidad de mensajes
    cantMensajes = new Label("Cantidad de emails");
    cantMensajes.setTextFill(Color.web("#0076a3"));
    cantMensajes.setLayoutX(8);
    cantMensajes.setLayoutY(211);
    txtcantMensajes = new TextField("");
    txtcantMensajes.setFocusTraversable(true);
    txtcantMensajes.setPrefSize(80,25);
    txtcantMensajes.setLayoutX(20);
    txtcantMensajes.setLayoutY(234);
     // email atacador
    lblEmailSender = new Label("Email atacante");
    lblEmailSender.setTextFill(Color.web("#0076a3"));
    lblEmailSender.setLayoutX(8);
    lblEmailSender.setLayoutY(266);
    // txt email atacador
    txtEmailSender = new TextField("");
    txtEmailSender.setFocusTraversable(true);
    txtEmailSender.setLayoutX(20);
    txtEmailSender.setLayoutY(285);
    // pass del atacador
    lblPassSender = new Label("Pass");
    lblPassSender.setTextFill(Color.web("#0076a3"));
    lblPassSender.setLayoutX(8);
    lblPassSender.setLayoutY(310);
    //ptxt pass del atacador
    txtPassSender = new PasswordField();
    txtPassSender.setFocusTraversable(true);
    txtPassSender.setLayoutX(20);
    txtPassSender.setLayoutY(329);
    // si se empieza a escribir la contrasena se activa el boton
    txtPassSender.textProperty().addListener(new ChangeListener<String>() {
      @Override
      public void changed(ObservableValue<? extends String> observable,
              String oldValue, String newValue) {
     
          btnOk.setDisable(false);
      }
    });
   
    // boom
    btnOk = new Button("¡Boom!");
    btnOk.setFocusTraversable(true);
    btnOk.setDisable(true);
    btnOk.setTextFill(Color.web("#0076a9"));
    btnOk.setLayoutX(20);
    btnOk.setLayoutY(385);
    btnOk.setPrefSize(100,25);
   
        // evento del boton
    btnOk.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent event){ // crea un thread para iniciar el proceso
    Boom boom = new Boom();
    boom.start(); // inicia la tarea
    }
   
    });
   
    // boton borrar
    btnBorrar = new Button("Borrar");
    btnBorrar.setLayoutX(126);
    btnBorrar.setLayoutY(385);
    btnBorrar.setPrefSize(100,25);
    btnBorrar.setOnAction(new EventHandler<ActionEvent>() {
    public void handle(ActionEvent evt){
    // borra todos los cambos y pone el focus en el email victima
    txtEmail.setText(null);
    txtAsunto.setText(null);
    txrMensaje.setText(null);
    txtcantMensajes.setText(null);
    txrActividad.setText("");
    txtEmail.requestFocus();
    }
    });
    // textarea
    lblActividad = new Label("Actividad");
    lblActividad.setTextFill(Color.web("#0076a3"));
    lblActividad.setLayoutX(250);
    lblActividad.setLayoutY(8);
    txrActividad = new TextArea();
    txrActividad.setPrefSize(300,390);
    txrActividad.setLayoutX(250);
    txrActividad.setLayoutY(30);
    txrActividad.setEditable(false); // el textarea no es editable
    // imagen para el fondo
    Image ima = new Image("file:htp.jpg",true);
    ImageView imagen = new ImageView();
    imagen.setImage(ima);
    // imagen para el icono de la ventana
    stage.getIcons().add(new Image("file:descarga.jpg"));
    // agrega todos los componentes al panel
    root.getChildren().addAll(imagen,lblEmail,btnOk,btnBorrar,txtEmail,lblAsunto,txtAsunto,lblMensaje,txrMensaje,cantMensajes,txtcantMensajes,lblEmailSender,txtEmailSender,lblPassSender,txtPassSender,lblActividad,txrActividad);
    stage.setTitle("¡Gmail king bomber! v0.1 - Darkgus"); // titulo del "stage" ( jframe)
    stage.setScene(escena); // le asigna la escena ( la escena es el panel principal, dentro esta el panel root de tipo Group)
    stage.setResizable(false);
    stage.show(); // mostramos la stage
   
}

    // clase que hace el envío de emails mediante thread
private class Boom extends Thread{

private boolean continuar=true; //condicion del thread

void detener(){ // metodo para detener el thread
continuar = false;
}
void inhabilitar() { // inhabilita los controles
btnOk.setDisable(true);
btnBorrar.setDisable(true);
txtEmail.setEditable(false);
txtAsunto.setEditable(false);
txrMensaje.setEditable(false);
txtcantMensajes.setEditable(false);
txtEmailSender.setEditable(false);
txtPassSender.setEditable(false);
}
void habilitar() { // habilita los controles
btnOk.setDisable(false);
btnBorrar.setDisable(false);
txtEmail.setEditable(true);
txtAsunto.setEditable(true);
txrMensaje.setEditable(true);
txtcantMensajes.setEditable(true);
txtEmailSender.setEditable(true);
txtPassSender.setEditable(true);
}
public void run()  { // incia el thread
while(continuar) { // hace la tarea mientras continuar sea true

try {
inhabilitar();
                // Propiedades de la conexión
                Properties props = new Properties();
                props.setProperty("mail.smtp.host", "smtp.gmail.com");
                props.setProperty("mail.smtp.starttls.enable", "true");
                props.setProperty("mail.smtp.port", "587");
                props.setProperty("mail.smtp.user", txtEmailSender.getText());
                props.setProperty("mail.smtp.auth", "true");

                // Preparamos la sesion
                Session session = Session.getDefaultInstance(props);

                // Construimos el mensaje
                MimeMessage message = new MimeMessage(session);
                message.setFrom(new InternetAddress("yo@yo.com"));
                message.addRecipient(
                    Message.RecipientType.TO,
                    new InternetAddress(txtEmail.getText()));
                message.setSubject("Hola");
                message.setText(
                    "Este es un aviso de su banco: clickee aquí: www.terobolacuenta.com");

                // Lo enviamos.
                int cantidad = Integer.parseInt(txtcantMensajes.getText() );
                for(int i=1; i<=cantidad; i++) {
                Transport t = session.getTransport("smtp");
                t.connect(txtEmailSender.getText(), new String(txtPassSender.getText()));
                t.sendMessage(message, message.getAllRecipients());
                txrActividad.setText(txrActividad.getText() + "\n" +
    "Nuevo mensaje enviado: " + new Date() + "\n" +
    "Destino: " + txtEmail.getText() + "\n" +
    "Asunto: " + txtAsunto.getText() + "\n" +
    "Mensaje: " + txrMensaje.getText()+"\n"+"\n");

                // Cierre.
                t.close();
               
                if(i==cantidad) {
                detener();
                habilitar();
                }
               } // fin for
            } // fin try
catch(Exception e) { //detenemos el thread, habilitamos los button y mostramos error
detener();
habilitar();
           
JOptionPane.showMessageDialog(null,"Ha ocurrido un error. Asegúrese que se hayan\nintroducido correctamente los datos","ERROR",JOptionPane.ERROR_MESSAGE);
}
} // fin while
} // fin run
} // fin clase
           

public static void main(String[] args) {
launch(args); // lanza la aplicacion
}
}



Ejecutable:  http://www.mediafire.com/?pdqn5cz324brq6b
#6
Java / WTF?
20 Junio 2013, 15:26 PM
Alguien sabe a qué se debe este inesperado error? (Netbeans)

Error: no se ha encontrado o cargado la clase principal "paquete".Main

PD: En JavaFX.
#7
Scripting / [Python] Tkinter básico - eventos
18 Junio 2013, 17:00 PM
Hola compañeros. Soy novato en Python, me parece un lenguaje interesante por lo que estoy aprendiendo a programar con él.

Ayer empecé con Tkinter, y todo bien, lo único que no logro es hacer que un botón llame a una función para que muestre un resultado.

Código (=python) [Seleccionar]

from tkinter import *

def operar(operacion):
   if(operacion == "suma"):
       print(operacion)
       lbl = Label(root,text="Total: "+str(a.get()+b.get()))
       lbl.grid(row=3,column=0)
   elif (operacion == "resta"):
       print(operacion)
       lbl = Label(root,text="Total: "+str(a.get()-b.get()))
       lbl.grid(row=3,column=0)

root = Tk()
a = IntVar()
b = IntVar()
txtA = Entry(root, textvariable=a, width=15)
txtB = Entry(root, textvariable=b, width=15)
btnSumar = Button(root, text="Sumar", command=operar("resta"), width=15)
txtA.grid(row=0,column=0)
txtB.grid(row=1,column=0)
btnSumar.grid(row=2,column=0)
root.mainloop()



Lo que quiero hacer es algo así (Java):

Código (=java) [Seleccionar]

public class Hola {

void calcula(String operacion)
{
  int numero1 = Integer.parseInt(textbox1.getText());
  int numero2 = Integer.parseInt(textbox2.getText());

  if(operacion.equals("suma") {
   labelResultado.setText(String.valueOf(numero1+numero2));
  else if (operacion.equals("resta") {
   labelResultado.setText(String.valueOf(numero1-numero2));
   // así con multiplicación y división

 }

// evento del boton
public void actionPerformed(ActionEvent evento)
{
  Objet item = (String) combobox.getSelectedItem();
  calcula(item)
 }


Cuando corro el programa, llama explícitamente a la función operar, si que haya presionado el botón. Esto sale por la terminal al ejecutar el script:

Código (=python) [Seleccionar]

>>>
resta
>>>



¿Algún entendido que pueda ayudarme?

Gracias.
#8
Scripting / [ESP] Doc oficial Python 3 + Yapa
15 Junio 2013, 22:17 PM
Hola, aquí les dejo la documentación oficial de Python 3 (del mismo Guido).

Documentacion

De yapa, Inmersión en Python 3 en Español:

[url"http://www.detodoprogramacion.com/2012/06/inmersion-en-python-espanol-excelente.html#more"]Inmersión en Python 3[/url]


Saludos.
#9
Hola, acá les traigo la última versión del libro más didáctico que se puede encontrar en Español. Especial para estudiar académicamente la materia.

Link -> http://www.mirrorcreator.com/files/TFGV9HE7/


El libro está scaneado. En esta edición sólo vienen los capítulos del 1 al 11. Los capítulos 12-19 están en la web de Deitel, pero obviamente necesitas un pass que viene indexado en la contraportada del libro, para descargar dichos capítulos.


Bendiciones  :D


PD: Algún master hacker que se hackee(valga la redundancia) la web para tener el libro completo :xD
#10
Hola. Para los que no les gusta la interfáz gráfica que ofrece Java(sobre todo en Windows) y quisieran que todas sus aplicaciones tengan el tema Nimbus por defecto, hacer estos pequeños pasos:

Tema Nimbus

1.- En un editor de texto, escribir las siguiente línea:

Código (=java) [Seleccionar]
swing.defaultlaf=com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel

2.- Guardarlo con el nombre swing.properties NOTA: No colocarle ninguna extensión(.txt,etc).

3.- Copiar el archivo y pegarlo en la carpeta lib del JDK y JRE. Osea:

CitarArchivos de Programa/Java/jdk1.7.0_17/lib
Archivos de Programa/Java/jre/lib

Y ya está. A partir de ahora, todas nuestras aplicaciones gráficas(swing) vendrán con Nimbus.



Bendiciones  :D
#11
Hola. Para los que recién empiezan en Java(como yo  :xD), les dejo la documentación oficial de Java SE7 en Español por si no sabían de su existencia. Muy útil si hay dudas y a veces no conseguimos respuesta.

Link -> http://devel.no-ip.org/programming/languages/java/tutorial/index.html


Saludos.