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 - Zoik

#1
Java / JavaFX, conexión por socket
25 Junio 2015, 13:05 PM
Buenas a todos gente.

Tengo una preguntilla respecto a este tema, como podria hacer para tener una gui y que a la hora de conectar con el servidor no se me congelase la interface, pongo el código hasdta ahora:

Código (java) [Seleccionar]

package app;

import java.io.IOException;

import app.view.NewServerController;
import app.view.RootController;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.stage.Modality;
import javafx.stage.Stage;


public class Main extends Application
{

private Stage stage;
private BorderPane rootLayout;

public static void main(String[] args)
{
launch(args);
}

@Override
public void start(Stage stage) throws Exception
{
this.stage = stage;
this.stage.setTitle("Fenrir");

initRootLayout();
}

public void initRootLayout()
{
try
{
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/Root.fxml"));
rootLayout = (BorderPane) loader.load();

RootController controller = loader.getController();
controller.setMain(this);

Scene scene = new Scene(rootLayout);
stage.setScene(scene);
stage.show();
} catch(IOException e)
{
e.printStackTrace();
}
}

public boolean showNewServerDialog()
{
try
{
FXMLLoader loader = new FXMLLoader();
loader.setLocation(Main.class.getResource("view/NewServer.fxml"));
BorderPane page = (BorderPane) loader.load();

Stage stage = new Stage();
stage.setTitle("Conectar a servidor");
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(this.stage);
Scene scene = new Scene(page);
stage.setResizable(false);
stage.setScene(scene);

NewServerController controller = loader.getController();
controller.setDialogStage(stage);

stage.showAndWait();

return controller.isOkCliked();
} catch(IOException e)
{
e.printStackTrace();
return false;
}
}

}


Código (java) [Seleccionar]

package app.client;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client
{

private String hostname;
private int puerto;
Socket socket;
DataOutputStream mensaje;
DataInputStream entrada;

public Client(String hostname, int puerto)
{
this.hostname = hostname;
this.puerto = puerto;
}

public boolean InitClient()
{
try
{
socket = new Socket(hostname, puerto);
entrada = new DataInputStream(socket.getInputStream());
mensaje = new DataOutputStream(socket.getOutputStream());
System.out.println(entrada.readUTF());
mensaje.writeUTF("Hola que tal!");
System.out.println(entrada.readUTF());
socket.close();
} catch(UnknownHostException e)
{
e.printStackTrace();
return false;
} catch(Exception e)
{
e.printStackTrace();
return false;
}
return true;
}

}


Código (java) [Seleccionar]

package app.view;

import org.controlsfx.dialog.Dialogs;

import app.client.Client;
import javafx.fxml.FXML;
import javafx.scene.control.TextField;
import javafx.stage.Stage;

public class NewServerController
{
@FXML
private TextField hostnameIpTextField;
@FXML
private TextField puertoTextField;
@FXML
private TextField userTextField;
@FXML
private TextField passwordTextField;
@FXML
private TextField nameTextField;

private Stage stage;
private boolean okClicked = false;

public void setDialogStage(Stage stage)
{
this.stage = stage;
}

public boolean isOkCliked()
{
return okClicked;
}

private boolean isInputValid()
{
String errorMessage = "";

if(hostnameIpTextField.getText() == null
|| hostnameIpTextField.getText().length() == 0)
errorMessage += "Hostname/Ip no válido!\n";
if(puertoTextField.getText() == null
|| puertoTextField.getText().length() == 0
|| Integer.parseInt(puertoTextField.getText()) < 0
|| Integer.parseInt(puertoTextField.getText()) > 65535)
errorMessage += "Puerto no válido!\n";
if(errorMessage.length() == 0)
{
return true;
} else
{
Dialogs.create()
           .title("Campos inválidos")
           .masthead("Por favor, corrige los campos no válidos")
           .message(errorMessage)
           .showError();
       return false;
}
}

@FXML
private void handleConectar() throws InterruptedException
{
if(isInputValid())
{
Client client = new Client(hostnameIpTextField.getText(), Integer.parseInt(puertoTextField.getText()));
boolean connected = client.InitClient();
if(connected)
{
okClicked = true;
stage.close();
}
}
}

@FXML
private void handleCancelar()
{
stage.close();
}

}


Código (java) [Seleccionar]

package app.view;

import javafx.fxml.FXML;
import app.Main;

public class RootController
{

private Main main;

public void setMain(Main main)
{
this.main = main;
}

@FXML
private void handleNewServer()
{
boolean okClicked = main.showNewServerDialog();
}

}


Imagino que se hará la ejecución de la conexión del socket en un thread a parte, pero no me acaba de quedar claro como haría la trata de errores en el thread.

La idea que tenia era que en cuanto le de a conectar, me abra el socket en un thread separado para que la interface no se congele y en cuanto se conecte correctamente  (o no) avise al thread principal para que actue en consecuencia.

Un saludo y gracias de antemano.
#2
Desarrollo Web / Cargar web en diálogo
17 Junio 2015, 00:28 AM
Buenas a todos,

tengo una dudilla sobre una aplicación web que vi hace un tiempo en la que llevaban acabo una acción que ahora quiero replicar.

La aplicación era de gestión de un centro pero lo que realmente me interesa era que mediante un exe, abrían una especie de diálogo a través de chrome, este diálogo no tenia ni barra ni nada solo se veía lo web y la típica X de cerrar.

Me gustaría saber como hacían esto o si hay alguna alternativa.

Un saludo y gracias de antemano.
#3
Desarrollo Web / Hostings warez, se comen?
11 Mayo 2015, 20:25 PM
Buenas gente, he estado leyendo sobre el tema pero no me acaba de quedar claro.

Tengo dos preguntas clave:

1)

Bien empiezo desde el comienzo.

Hoy en día para tener contenido ilegal protegido por copyright o no (las web pornográficas son un ejemplo), digamos mejor que para tener contenido sensible un hosting normal no sirve ya que la mayoría tienen ciertos términos que prohíben dicho contenido.

Bien me he puesto a indagar y por lo visto la alternativa a estos hostings, son los warez, hostings que tienen una política de privacidad en la que protegen al cliente (de la DMCA en general).

Según he estado leyendo recomiendan hostings de holanda suiza o de los países del este.

Hasta aquí todo claro, pero lo que no acabo de entender es como alojar los archivos, supongamos, si quisiera hacer una web de leer cómics online, por decir algo. Que sería lo recomendable, contratar un hosting warez para alojar la web y luego aparte otro para alojar los ficheros?

Ya que estoy me gustaría saber que servidores warez recomiendan.

2)

Si una persona tuviese ya su web montada y quisiese hacerla rentable con una api de publicidad, como lo haría?, la mayoría de apis en sus términos dicen explícitamente que no puedes utilizarla en webs de contenido protegido por copyright.

Si hay alguna api de publicidad que no tenga éste requisito me gustaría saber de ella.

Un saludo y gracias de antemano.
#4
Buenas gente, un placer estar de nuevo por aquí.

He estado leyendo acerca del Web Scraping los últimos días y he encontrado opiniones dispares sobre si es una práctica legal o no (dejando de lado la ética de la misma).

Algunos dicen que si es legal pero..., me explico, por lo visto si la información que se extrae esta sujeta a "creative commons" y tu la coges sin permiso del autor para ganar algún tipo de beneficio económico por ejemplo publicándola en tu web sería ilegal siempre y cuando el autor diga explícitamente que no puedes hacerlo.

Otro ejemplo sería si a causa de este scraping se genera una denegación de servicio o cualquier mal funcionamiento en los servidores de la web.

Pues bien, después de escribir esto que no se si tiene o no sentido, me gustaría saber si alguien está puesto en el tema.

Os expongo mi duda, si una persona tiene X contenido, por ejemplo una web de compra online, y yo por scraping extraigo los precios productos y demás para publicarlo en mi web con el objetivo de hacer un comparador con otras webs de la misma índole, ésto sería ilegal si la web la publico para el uso de otra gente?

Os muestro un ejemplo real:

LINK: http://www.pccomponentes.com/avisolegal.html

CitarPropiedad Intelectual e Industrial
Todos los signos distintivos, marcas, nombres comerciales, contenidos, estructura, diseño y forma de presentación de los elementos y cualquier otra información que aparezca en este sitio Web son propiedad de PCCOMPONENTES por sí o como cesionaria y están protegidos por los derechos de propiedad industrial e intelectual.
El usuario tiene prohibida la reproducción, transformación, distribución, comunicación pública y, en general cualquier otra forma de explotación de los elementos referidos en el apartado anterior sin autorización expresa de PCCOMPONENTES.
El usuario se abstendrá de emplear medios que puedan suprimir, alterar, eludir o manipular cualesquiera dispositivos de protección o sistemas de seguridad que puedan estar instalados y que comporten un riesgo o daño o inutilización del sitio Web y/o sus contenidos.
PCCOMPONENTES no se responsabiliza del posible uso inapropiado que terceros realicen de esta página Web, ni de la información que a través de ella transmitan a terceros. El uso de los contenidos que pueda hacer el usuario y las eventuales consecuencias, daños o perjuicios que pudiesen derivarse, son de la exclusiva responsabilidad del usuario. PCCOMPONENTES se excluye por los daños y perjuicios de toda naturaleza causados a los usuarios por el uso de enlaces (links), directorios y herramientas de búsqueda, que permiten a los usuarios acceder a sitios Web pertenecientes y/o gestionados por terceros así como de la presencia de virus u otros códigos maliciosos en los contenidos que puedan producir cualquier tipo de daños en el sistema informático, documentos electrónicos o ficheros de los usuarios. PCCOMPONENTES se reserva el derecho de ejercitar las acciones legales que considere oportunas derivadas de cualesquiera usos ilícitos por parte de terceros de los contenidos de su página web.

En éste caso, la web expone claramente que está prohibido hacer scraping de ella, o vamos eso entiendo yo, pero ésto es tan sencillo?, es decir yo tengo una web cualquiera y solo con poner que no puedes coger datos de ella ya es imposible legalmente hacerlo? no tienen que sacar ningún tipo de licencia de "creative commons"?

Perdón por preguntar tanto pero es que me quiero informar mucho sobre éste tema.

Un saludo y gracias de antemano.
#5
PHP / PHP, Curl y facebook
4 Marzo 2015, 20:34 PM
Buenas gente, cuanto tiempo

bien estoy practicando crawling y scraping en php, y estoy mirando a ver si se puede leer el código de una página cualquiera de facebook, para mi sorpresa cuando leo la url con curl, este no me devuelve nada.

Imagino que es debido a que facebook ya tiene contramedidas contra bots, pero me gustaría saber si hay alguna manera de hacerlo sin utilizar la propia api de facebook.

Un saludo y gracias de antemano.
#6
Java / Pintar celdas de JTable al hacer clic
23 Junio 2014, 14:06 PM
Primeramente buenas a todos.

Bueno estoy empezando a mirar temas de heurísitica y he empezado haciendo la búsqueda del recorrido mas corto con el algoritmo A*.

Hasta aquí todo bien, pero me surge un problema y es que para testear todo esto, quiero hacer una JTable que al yo clicar en una celda de color blanco esta se pinte de color negro para dar a entender a la aplicación que es una celda infranqueable por el contrario si clico en una negra, se volverá blanca.

Básicamente el problema es que cuando selecciono la celda blanca, me vuelve negras esa y todas las siguientes.

A ver si me pudieseis echar una mano.

Código (java) [Seleccionar]
package base;

import graphics.Gui;

public class Main {

public static void main(String[] args) {
new Gui();
}

}


Código (java) [Seleccionar]
package graphics;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JTable;

public class Gui extends JFrame
{

/**
*
*/
private static final long serialVersionUID = 1L;
private ExampleTableModel model = new ExampleTableModel();
private JTable table = new JTable(model);

public Gui()
{
table.setRowHeight(30);
table.setTableHeader(null);
table.setCellSelectionEnabled(true);
table.setCellSelectionEnabled(false);
MyDefaultTableCellRenderer renderer = new MyDefaultTableCellRenderer();
table.setDefaultRenderer(String.class, renderer); 
JFrame frame = new JFrame();
frame.setSize(500, 500);
frame.addWindowListener(
new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}
);
frame.getContentPane().add(table);
frame.setResizable(false);
frame.setVisible( true );
}
}


Código (java) [Seleccionar]
package graphics;

import javax.swing.table.AbstractTableModel;

public class ExampleTableModel extends AbstractTableModel
{
    /**
*
*/
private static final long serialVersionUID = 1L;
private final String[] columnNames = {"", "", "", "", "", "", "", "", "", "", "", "", ""};
    final Object[][] data = {
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""},
        {"", "", "", "", "", "", "", "", "", "", "", "", ""}
    };
   
    @SuppressWarnings("unchecked")
public Class getColumnClass(int column)
    {
        return getValueAt(0, column).getClass();
    }
    public int getColumnCount()
    {
        return columnNames.length;
    }
    public String getColumnName( int column )
    {
        return columnNames[column];
    }
    public int getRowCount()
    {
        return data.length;
    }
    public Object getValueAt( int row, int column )
    {
        return data[row][column];
    }
    public void setValueAt(Object value, int row, int column)
    {
    data[row][column] = value;
    }
}


Código (java) [Seleccionar]
package graphics;

import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class MyDefaultTableCellRenderer  extends DefaultTableCellRenderer
{

/**
*
*/
private static final long serialVersionUID = 1L;
private Color [] colors = {Color.WHITE,
Color.BLACK};

public Component getTableCellRendererComponent
(JTable table, Object value, boolean isSelected,
boolean hasFocus, int row, int column)
{
Component cell = super.getTableCellRendererComponent
(table, value, isSelected, hasFocus, row, column);

setBorder(noFocusBorder);

if(row == table.getSelectedRow() && column == table.getSelectedColumn()) {
System.out.println("Recorriendo " + row + " - " + column + "\nSeleccionada " + table.getSelectedRow() + " - " + table.getSelectedColumn());
if(cell.getBackground().equals(colors[1]))
{
System.out.println("Pinto Blanco");
cell.setBackground(Color.WHITE);
} else if(cell.getBackground().equals(colors[0]))
{
System.out.println("Pinto Negro");
cell.setBackground(Color.BLACK);
}
}

return cell;
}

}


Un saludo y gracias de antemano
#7
Java / Conexiones indeseadas, sockets
27 Abril 2014, 23:19 PM
Hola gente,

haciendo el servidor de una aplicación de gestión de ficheros, me a surgido una pregunta, si yo hago un servidor y un cliente para que "hablen entre si", otra persona que sniffease su red y averiguase la conversación que mantienen el cliente y el servidor ademas de la dirección y el puerto a donde conecta el cliente, debería ser capaz de crear por su cuenta un cliente que hablase con mi servidor, ¿Me equivoco?

Solo quería saber si hay alguna manera de evitar esto o si java ya por si solo baraja ésta posibilidad.

Un saludo y gracias de antemano gente  ::)
#8
Java / Migrar de Access a MySQL con Java
11 Enero 2014, 11:14 AM
Antes de nada cordiales saludos a todos compañeros.

Tengo que hacer una aplicación la cual coja un fichero MDB (Access) y me lo suba a una base de datos en MySQL.

He estado buscando sin éxito alguno algún tipo de API la cual me permita exportar una base de datos en access a mysql, por eso mismo recurro a este gran foro para ver si vosotros sabéis de alguna.

La otra alternativa que se me a ocurrido es clonarlas a palo seco, haciendo una SELECT en una tabla de access, sacar los registros y hacer un INSERT en una tabla en MySQL.

Desde vuestro punto de vista cual es la mejor posibilidad, estoy enteramente abierto a sugerencias.

Un saludo y gracias de antemano.
#9
Java / JTextPane con scroll
13 Septiembre 2013, 17:03 PM
Hola buenas, estoy haciendo una gui en la que tengo un JTextPane montado en un JScrollPane, y tengo el problema de que si escribo textos muy largos también se activa el scroll horizontal, me gustaría que únicamente se activase el vertical y que el texto se fuese apilando.

Se que con un JTextArea está el .setLineWrap(true) que lo hace perfectamente pero el JTextPane no lo admite.

Ya e probado lo típico de HORIZONTAL_SCROLLBAR_NEVER pero unicamente la oculta.

Un saludo y como siempre gracias de antemano.
#10
Java / No entiendo planteamiento de un Thread
11 Septiembre 2013, 11:02 AM
Bien estoy trasteando con sockets, y me tope con uno de los tutoriales de Chuidiang, que haría yo sin su wiki  ;D.

Aqui esta el link:

http://www.chuidiang.com/java/sockets/hilos/socket_hilos.php

Código (java) [Seleccionar]
HiloDeCliente.java
// Implementa Runnable para poder ser lanzada en un hilo aparte
public class HiloDeCliente implements Runnable
{
  // En el constructor recibe y guarda los parámetros que sean necesarios.
  // En este caso una lista con toda la conversación y el socket que debe
  // atender.
  public HiloDeCliente(DefaultListModel charla, Socket socket)
  {
     ...
  }

  public void run ()
  {
     while (true)
     {
        // Código para atender al cliente.
     }
  }
}


Código (java) [Seleccionar]
ServidorChat.java
public class ServidorChat
{
  // Para guardar toda la conversación.
  private DefaultListModel charla = new DefaultListModel();

  public ServidorChat()
  {
     // Se crea el socket servidor
     ServerSocket socketServidor = new ServerSocket(5557);

     // Bucle infinito
     while (true)
     {
         // Se espera y acepta un nuevo cliente
         Socket cliente = socketServidor.accept();

         // Se instancia una clase para atender al cliente y se lanza en
         // un hilo aparte.
         Runnable nuevoCliente = new HiloDeCliente(charla, cliente);
         Thread hilo = new Thread(nuevoCliente);
         hilo.start();      
     }
  }
}


Mi pregunta esta en el Runnable de el bucle while, porque hace:

Código (java) [Seleccionar]
Runnable nuevoCliente = new HiloDeCliente(charla, cliente);
         Thread hilo = new Thread(nuevoCliente);


No sería mas directo hacer:

Código (java) [Seleccionar]
HiloDeCliente nuevoCliente = new HiloDeCliente(charla, cliente);

Y extender la class HiloDeCliente de Thread?

Es decir porque implementa un Runnable y la pone "dentro" de un Thread puediendo lanzar un Thread directamente.

Si alguien puediese explicarmelo lo agradeceria mucho.

Un saludo y gracias de antemano.
#11
Java / Mi SwingWorker no se cancela
29 Agosto 2013, 10:07 AM
Bien estoy puliendo una aplicación de shutdown y me e quedado atascado en un lugar.

Tengo el siguiente método que recoge los eventos de dos botones, cuando le doy a programar el apagado me inicia la variable time cogiendome los valores de tres JComboBox, time, es un SwingWorker que revisa la hora, supuestamente cuando yo le diese a cancelar, con el comando time.cancel(true) me tendría que detener el thread, pero no es así:

Código (java) [Seleccionar]
public void actionPerformed(ActionEvent evt) {
CheckTime time = new CheckTime(hour.getSelectedIndex(), min.getSelectedIndex(), sec.getSelectedIndex());
if(evt.getSource() == programShutdown && isStarted == false){
System.out.println("iniciado!");
time.execute();
isStarted = true;
} else if(evt.getSource() == cancelShutdown && isStarted == true){
System.out.println("cancelado!");
time.cancel(true);
isStarted = false;
}

}


Código (java) [Seleccionar]
package base;

import java.util.Calendar;

import javax.swing.SwingWorker;

public class CheckTime extends SwingWorker{
private int copyHour;
private int copyMin;
private int copySec;
public  CheckTime(int hour,int min, int sec){
copyHour = hour;
copyMin = min;
copySec = sec;
}

protected Object doInBackground() throws Exception {
Calendar calendario;
int thisHour;
int thisMin;
int thisSec;
System.out.println("iniciado!");
do{
calendario = Calendar.getInstance();
thisHour = calendario.get(Calendar.HOUR_OF_DAY);
thisMin = calendario.get(Calendar.MINUTE);
thisSec = calendario.get(Calendar.SECOND);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
System.out.println("Thread sleep de ChekcHour a fallado");
}
}while(copyHour != thisHour || copyMin != thisMin || copySec != thisSec);
System.out.println("APAGATE!");
return null;
}

}


Sospecho que puede ser, que como yo genero un new time, cada vez que le de o a cancel o a programar, al darle a cancel me cancela el que genera cancel, pero no el anterior que genere con el program, pero bueno quiero escuchar segundas opiniones.

Un saludo y gracias de antemano.
#12
Java / Comprobar la hora en java
28 Agosto 2013, 16:05 PM
Bien tengo una duda, quería hacer un programa en el cual a la 1 de la mañana me apagase el ordenador por temas de ahorrar luz.

Bien esto ya esta echo, lo e echo con un bucle que me comprueba constantemente que hora es, y en el momento que la hora se pone a 1, me sale del bucle y me inicializa el apagado, simple.

El problema que tengo es el siguiente, en el momento que me empieza el bucle me consume demasiados recursos, y me gustaría saber si hay algún método para poder comprobar la hora constantemente sin necesidad de gastar tanta máquina.

Un saludo y gracias de antemano.
#13
Java / Interfaz se congela
10 Agosto 2013, 20:45 PM
Bien, no pondré el código ya que es una parrafada, mi pregunta es muy simple y breve, procedo a exponerla:

Bien mi problema consiste en que, tengo una interfaz en swing, una tabla y un botón, bien al yo darle al botón me tiene que listar mediante una consulta a un bbdd en mysql una serie de registros, y esto lo hace muy bien, pero antes de mostrármelos se queda congelada toda la interfaz durante un breve momento mientras procesa la consulta, me gustaría saber si hay alguna técnica para evitar esta congelación.

Gracias de antemano.