• Jueves 28 de Marzo de 2024, 22:08

Mostrar Mensajes

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


Mensajes - silverfox

Páginas: [1] 2 3 ... 12
1
Java / Re: Crear un objeto de clase en el nodo de una lista enlazada
« en: Jueves 13 de Agosto de 2009, 10:14 »
Buenas...

Ni la clase PuertoComercial ni la clase Nodo deberían ser declaradas static.

Si pones el código de ListaS podríamos ayudarte, así no podemos mirar cuál es el error.


Un saludo.

2
Java / Re: problema con runtime()
« en: Lunes 10 de Agosto de 2009, 12:31 »
Hola.

Si el process es null, el siguiente error lo tienes en process.getInputStream, que te hará saltar un NullPointerException.

He estado probando un poco el código en windows, ejecutando un comando ipconfig y algunos otros y no he tenido problema (No tengo linux en el trabajo).
La variable sh no la estás usando para nada, por lo que no ejecutas nunca el su -c y eso me despista un poco. Comprueba que el comando es realmente el que quieres ejecutar.

Para comprobar que todo debería ir bien, te aconsejaría meter la ejecución que quieres en un proceso por lotes y realizar la llamada a éste. Luego, trata de pasarle de parámetro al .sh sólo la ruta y luego la ruta y el pkg, a ver si tira. Todo indica que Java no te está cogiendo los parámetros de command de la forma en la que tú crees.


Espero que te sirva.

Un saludo.

3
Java / Re: leer
« en: Lunes 10 de Agosto de 2009, 11:49 »
Hola...

En el caso de una lectura normal (no la clase Scanner), tienes un método en todos los InputStream que es available, que te indica cuántos bytes hay disponibles para lectura. En el caso en el que quieras leer todo lo que hay y pasar a otra cosa, puedes decirle que te lea todos los bytes disponibles en ese momento:

Código: Text
  1.  
  2. byte[] lectura = new byte [ myInputStream.available() ] ;
  3. myInputStream.read(lectura);
  4.  
  5.  

En el caso del Scanner, va por tokens, lo que quiere decir que tienes que definir un separador (el normal es el espacio blanco).
Utiliza un bucle while (myScanner.hasNext()) para ir recogiendo los tokens, cuando hasNext()== false, ya habrás leído todo lo que hay disponible en el Scanner.



Espero que te sirva.

Un saludo.

4
Java / Re: patron de diseño
« en: Viernes 3 de Julio de 2009, 09:19 »
Además, no pusiste qué patrón de diseño quieres que te expliquemos.

Como ya dije en otro post, os recomiendo encarecídamente para la iniciación en estos temas el Head First Design Patterns, de la colección Head First.


Un saludo.

5
Java / Re: Codigo de 3d max en JAva
« en: Viernes 5 de Junio de 2009, 09:21 »
Hola.


Para trabajar con objetos 3D desde java tienes el API Java3D. Es bastante interesante de manejar y creo recordar que tiene plugins para que puedas cargar directamente objetos hechos en 3ds y en algunos otros programas 3d de los más conocidos.


Espero que te sirva.
Un saludo.




Silverfox

6
Java / Re: Escribir en una lista enlazada desde interfaz grafica
« en: Lunes 1 de Junio de 2009, 14:52 »
Hola.

Primero de todo, no dices si la lista enlazada es la clase LinkedList de Java, usas un Vector o algo así o tienes que usar tu propia clase.

En el caso de cualquiera de las dos primeras, todas las instrucciones ya vienen montadas, así que sólo tendrás que pasar al método de añadir los datos que quieres guardar, en este caso tu TData.

En el otro caso (si es un ejercicio, supongo que será tu caso), tienes que crear la clase concentrándote en este tipo de cuestiones.
Lo primero, generar la clase de los datos que quieres guardar.
En segundo lugar, crear la clase ListaEnlazada, con operaciones de añadir, buscar, borrar, consultar y lo que sea que necesites (aconsejo un listarTodo y un toString). Aquí al insertar tendrás que usar la lógica que te hayan dado en clase para meter un valor. Si necesitas que te la recordemos, haznoslo saber.

Lo último, como te han dicho, la interfaz.


Un saludo. Ya nos contarás.
Suerte

7
Java / Re: Patrones de diseño en java
« en: Lunes 18 de Mayo de 2009, 09:39 »
Hola luisianoXVI.

Para este ejercicio en particular, y para muchos otros de este estilo, sobre todo si eres nuevo en el tema de patrones, te aconsejo encarecidamente que te consigas el libro de O'reilly Head First Design Patterns. Aquí vienen unos cuantos patrones, perfectamente identificados y con ejemplos perfectos de uso e identificación.

Aunque yo tengo el libro impreso, he estado mirando y es posible conseguirlo en formato electrónico sin ningún problema.

Adicionalmente, te contaré que, dependiendo del libro en el que mires, tu problema se resuelve de distinta manera, ya que no hay una forma perfectamente correcta y única de aplicar los patrones, sino que cada uno se centrará en mejorar un aspecto determinado.

Como ejemplo, yo aplicaría un interface para el requisito 1, por el principio de bajo acoplamiento / Patrón Bridge.
Para los tipos de producto (venta inmediata, subasta, etc) crearía un patrón Decorator, que iría bastante de la mano con un patrón Factory.
Las categorías y subcatecogorías, Factory (quizá algo más, dependiendo más específicamente de las diferencias entre categorías y las particularidades de las subcategorías.
En cuanto a las pujas, el método normal es el del patrón Publicador/Subscriptor (Publisher/Subscriptor).

Y bastantes más patrones que se pueden aplicar en cada parte. Recuerda que en diseño puedes hilar tan fino como quieras/puedas/te permitan.
Todos los patrones que te comento vienen en el Head First, por si quieres echarles un vistazo.

Por cierto, que yo me compré el libro en Madrid, en cocodrilolibros.com (hay tienda en Madrid) seguro que lo tienen o te lo pueden encargar (lo malo es el precio... :S )


Un saludo y suerte con los ejercicios.


Silverfox

8
Java / Re: restringir tamaño y resolucion al tomar una foto webcam
« en: Jueves 7 de Mayo de 2009, 09:37 »
Hola ditrosi.

¿Qué error te da?


Por la linea que estás poniendo, no cogiste del todo cómo se usa el método. El tercer parámetro (hints en la documentación) es para poner allí la constante de cómo quieres que se escale la imágen.

Los candidatos son:

static int SCALE_AREA_AVERAGING
          Use the Area Averaging image scaling algorithm.
static int SCALE_DEFAULT
          Use the default image-scaling algorithm.
static int SCALE_FAST
          Choose an image-scaling algorithm that gives higher priority to scaling speed than smoothness of the scaled image.
static int SCALE_REPLICATE
          Use the image scaling algorithm embodied in the ReplicateScaleFilter class.
static int SCALE_SMOOTH
          Choose an image-scaling algorithm that gives higher priority to image smoothness than scaling speed.


He mirado en la documentación y ninguno de ellos era 0. Te aconsejo que pruebes con Image img = img.getScaledInstance(200,150, Image.SCALE_SMOOTH);  para ver si te sigue fallando. Si lo hace, dinos qué error se produce.


Un saludo.


Silverfox

9
Java / Re: restringir tamaño y resolucion al tomar una foto webcam
« en: Miércoles 6 de Mayo de 2009, 09:12 »
Hola.

Después de haber visto tu código, lo que yo haría sería capturar la fotografía de forma normal, tal y como lo haces ahora. Pero después de capturar y transformar en Image, usar el método   'Image getScaledInstance(int width, int height, int hints)' de la clase java.awt.Image para bajar la resolución.

Otra opción que tienes, que no sé si sería factible para tu programa es cambiar la compresión y/o el formato de las fotos.

Con ambos métodos, te diría que muestres por pantalla la fotografía 'retocada' que se va a guardar, porque puede que alguien no esté de acuerdo en lo que vas a guardar (frases como 'mi cámara hace mejores fotos que eso' y similares) y se empeñe en repetir la foto 50 veces hasta que le guste el resultado.


Espero que te sirva.
Ya nos contarás.


Silverfox

10
Java / Re: Problemas con webServices
« en: Jueves 23 de Abril de 2009, 11:07 »
Hola.

Tendrás que depurar el código del servicio Web. Con la información que das es casi imposible saber por qué se queda colgado el fichero.

Por lo que comentas, lo más probable es que no se llegue a cerrar la conexión con el cliente, o no se llegue a cerrar el fichero.


Un saludo y suerte.


Silverfox.

11
Java / Re: convertir ROMANOS a Decimales(o arabigos)
« en: Miércoles 8 de Abril de 2009, 17:10 »
Hola.

Las conversiones de romanos a arábigos siguen algunas reglas que ya te han comentado:

1.- Nunca puede haber más de 3 letras iguales seguidas. VIII = 8

2.- Las letras siempre van de más grande a más pequeña. Si te encuentras una pequeña y siguiente una más grande, la pequeña resta a la grande: MCM = 1900

3.- Sólo puede haber una letra restando a otra más grande:  IIV = 3 MAL  --->  III = 3

4.- Hay que escribir el número con el menor número de letras posible: MDM = MAL  ---> MD = 1500 = BIEN

Dadas las reglas 3 y 4, hay que ver que entonces estará prohibido que la resta de dos letras devuelva un valor igual al de una letra, por ejemplo, está mal DM, porque M-D = 1000 - 500 = 500 = D, ya que el valor 500 se puede escribir con menos de dos letras (o sea, con una, la D).
En realidad, la regla que te he puesto como 1 también viene de aquí, ya que por ejemplo: VIIII = 9 = IX. Como puede escribirse con menos letras, el correcto es el segundo. De la misma forma, tal y como te comentó betoskim, VV = 10 = X => vale la segunda que tiene menos letras.


Con estas reglas el parser se hace algo más sencillo. La cuestión es si te van a dar siempre números correctos, aceptas también incorrectos sin dar error o tienes que validar el número además de dar el resultado.


Espero que esto te aclare algo. Ya nos contarás.


Suerte y un saludo.

12
Java / Re: IndexOf
« en: Lunes 30 de Marzo de 2009, 11:18 »
Hola.

El código que proponías funciona perfectamente:

Código: Text
  1.  
  2. import java.util.Arrays;
  3.  
  4. public class TestArrays {
  5.    
  6.     public static void main (String[] args){
  7.        
  8.         String s1 = new String ("cadena1");
  9.         String s2 = new String ("cadena2");
  10.    
  11.         String[] array= {s1, s2};
  12.        
  13.         int i= Arrays.asList(array).indexOf(s2);
  14.         System.out.println(i);
  15.     }
  16. }
  17.  
  18.  

Este código está funcionando perfectamente.
Por favor, indica qué es lo que estás tratando de hacer y cuál es el resultado que te estaba dando para hacer el cambio en tu código.

Un saludo.


Silverfox

13
Java / Re: Serializacion XML
« en: Martes 17 de Marzo de 2009, 17:46 »
Hola.

Para el XML es absolutamente indiferente que los tags del mismo nombre y a la misma profundidad vengan en un orden o en otro.

Si miras la documentación de Document verás que cuando preguntas por un hijo, o un conjunto de ellos, en la propia documentación de Java te dice que esos métodos no garantizan que los hijos sean devueltos en orden.

De todas formas ¿cuál es la diferencia entre las dos clases que propones? Funcionalmente no hay ninguna ¿por qué necesitas que se conserve el orden de los atributos?



Un saludo.



Silverfox

14
Java / Re: PARSING XML
« en: Martes 17 de Marzo de 2009, 17:41 »
Perdón... también mirate org.w3c.dom, se me olvidó antes...


Un saludo.


Silverfox

15
Java / Re: PARSING XML
« en: Martes 17 de Marzo de 2009, 17:37 »
Hola.

Existen parsers XML SAX y DOM (JDOM en implementación para Java).

Echa un vistazo al API JDK 1.4.2 que no andará lejos de la JVM que te dejarán usar para el exámen, fijate en los paquetes javax.xml.parsers y org.xml.sax.

No sé si será eso lo que estás pidiendo...

Espero que te sirva.

Un saludo y suerte en el examen.


Silverfox

16
Java / Re: Nuevita en java
« en: Martes 17 de Marzo de 2009, 17:23 »
Hola.

Es sencillamente imposible llamar desde un objeto a métodos que están en otro sin tener una instancia del mismo si los métodos no son static.

Lo que suele hacerse con programas de varios formularios es utilizar un Form como formulario principal y que el principal tenga variables Form2, Form3, etc.
Cuando se crea uno de los formularios hijos, deberías pasarle todos los datos que necesita para hacerlo funcionar. Si es necesario que exista comunicación entre los dos, deberías pasarle la instancia del primero al formulario 2, de esta manera:

Código: Text
  1.  
  2. FormHijo extends Form {
  3.     FormPrincipal padre= null;
  4.  
  5.     ...
  6. }
  7.  
  8.  

y en el Formulario principal:

Código: Text
  1.  
  2. FormPrincipal extends Form {
  3.     private FormHijo hijo= null;
  4.  
  5.     public void crearHijo{
  6.         hijo= new FormHijo();
  7.         hijo.padre= this;
  8.     }
  9. }
  10.  
  11.  

Pasale los parámetros como te parezca mejor. En este caso es posible tener comunicación bidireccional entre ambos. De todas formas, no debes olvidarte de controlar qué pasa cuando el formulario hijo ya está creado y de poner a null las variables cuando se destruya el formulario al que se hace referencia.
Además, date cuenta de que esto es algo que suele ser inusual. Lo normal sería hacer el programa de tal forma que sólo el padre comunicase con los hijos y que los hijos no necesiten llamar al padre para nada.



Espero que te sirva.

Un saludo y suerte.



Silverfox

17
Java / Re: No entiendo este error!
« en: Martes 24 de Febrero de 2009, 12:11 »
Hola.

Si miras en el API de JAVA:

public static String showInputDialog(Object message)

Estás rellenando el Vector con Strings, así que es normal que no te haga el cast a Integer.

Echa un vistazo al API de Integer:

public static Integer decode(String nm) throws NumberFormatException

Esto resuelve tu problema.


Suerte.


Silverfox

18
Java / Re: problema con programa de arreglos
« en: Martes 27 de Enero de 2009, 17:57 »
Hola...

Código: Text
  1.  
  2. int x=0, w=0;
  3. for(w=0;w<10;w++){
  4. if(A[x]%2==0){
  5. D[w++]=A[x];
  6. }
  7.  
  8.  

Este código introduce los valores de A
  • en las posiciones pares del array D, comenzando por la posición 0.

Te recomendaría que no manipulases la variable de cuenta de un bucle for en el interior del propio bucle. Tu salud mental lo agradecerá cuando trates de depurar.


Suerte.

19
Java / Re: Juego cruz y raya
« en: Martes 27 de Enero de 2009, 17:50 »
Hola.

Lo que estás buscando se llama árbol de decisión. En particular, el conocido como árbol minimax.
Búscalo en google y verás bastantes ejemplos de cómo implementarlo.

Los nodos del árbol son los tableros, en la raiz está el tablero actual. Cada jugada posible es una ramificación que generará otro nodo y así sucesivamente.Hay que considerar que cada nivel del árbol es 'media jugada', o sea, que es el turno de un jugador y en el árbol hay que reflejar las jugadas de dos jugadores (es como pensar en el movimiento que hará tu contrario). A partir de ahí, se le da una puntuación a cada tablero, considerando que tú jugarás la mejor de tus opciones y el contrario la mejor de las suyas (si el no lo hace lo mejor posible, peor para él) y se elige el mejor camino con todas las jugadas que se hayan calculado.

Por ejemplo, en las 3 en raya podrías programar todo el arbol completo, por lo que tu juego nunca podría perder, mientras que en ajedrez o en go, el cálculo es muy complejo y no puede hacerse sólo con un árbol.

Hay muchos libros de IA que hablan de este algoritmo, intenta conseguir alguno.

Ya nos contarás.
Suerte.

20
Java / Re: Duda con BufferedReader
« en: Martes 20 de Enero de 2009, 14:59 »
Hola...

Echa un vistazo al paquete java.nio

Los canales (Channel) permiten hacer lectura no bloqueante del stream de datos. Convierte la entrada de teclado en un Channel y utiliza la lectura en modo nonblocking.

Espero que te sirva.


Un saludo.


Silverfox

21
UML / Re: ulm y clases ¿para qué?
« en: Jueves 8 de Enero de 2009, 10:05 »
Hola.

Debeis mirar las clases más como trabajadores en una oficina. Una de las funciones de las clases es agrupar una serie de datos (sus variables) con las operaciones que se pueden realizar con ellos (sus métodos). Esto, por ejemplo, lo indican varios patrones. Podeis echar un vistazo al patrón Experto.

En cuanto al UML, no son más que ciertas convenciones para poder explicarles a otros cómo está construído tu programa, aunque luego lo normal es que cuando lo diseñas la correspondencia de clases no sea perfecta entre tu UML y tu programa.

Los patrones, según todos los libros son 'soluciones que se han tomado con resultado eficaz para problemas que le han surgido a mucha gente antes'. Son una forma de dividir el programa en clases para resolver esos problemas. Para tu ejemplo, piensa en lo que tendrías que hacer con tu programa si al jefe de la ferretería le da por cambiar la BD de MySQL a Oracle, o a DB2, que quiere poder realizar consultas a la aplicación desde una página web, o que mañana quiere ver los datos en un componente que no sea un treeview. Un buen diseño implica la reutilización del código al máximo posible y garantiza la máxima mantenibilidad del mismo para las posibles modificaciones.

Si quieres ver algo de patrones con ejemplos y a un nivel muy asequible para iniciarte, te recomiendo el libro 'Heading First: Patterns' creo recordar que es de McGraw Hill. Es muy sencillo y muy bueno.

Espero que te sirva de algo.

Un saludo.


Silverfox

22
Java / Re: Excepción java.lang.NoClassDefFoundError
« en: Martes 16 de Diciembre de 2008, 09:32 »
Hola!

Como bien indica tu excepción, tu programa falla porque no encuentra la clase javax.media.rtp.ReceiveStreamListener.

Echa un vistazo a ver si tienes los paquetes correspondientes en un lugar donde pueda encontrarlos tu máquina virtual.

En cuanto a que te sobran métodos main, no te preocupes, Java está preparado para que puedas definir un método main en cada fichero que tenga una clase. Lo único es que tienes que indicarle en qué clase está el main que quieres ejecutar.


Ya nos contarás.
Un saludo.


Silverfox

23
Java / Re: implementar Chat rooms en JAVA
« en: Jueves 27 de Noviembre de 2008, 10:48 »
Hola.

Si lo que necesitas es utilizar varios canales para un chat, nada más sencillo:

Utiliza una Hashtable para almacenar los canales. De esta forma, cuando alguien seleccione un canal, miras si ya existe una key igual a ese nombre. Si no existe, la creas.

Dentro de una Hashtable puede haber cualquier tipo de objetos, en tu caso, almacena las conexiones (ya sea un socket o una clase propia) dentro. Otra opción es que hagas una clase Chat en general y que en ella guardes todo lo referente a cada chat. Entonces, cuando alguien cree un canal, creas tu clase en un thread aparte y la guardas dentro de la Hashtable. Esto hace bastante simple que construyas muchos chats a partir de uno que ya tengas, pero complica un poco la lógica de entrada a cada chat.

Espero haberte servido de ayuda.

Un saludo.



Silverfox

24
Java / Re: Problema Con La Interfaz
« en: Viernes 9 de Mayo de 2008, 00:51 »
Hola...

Tu práctica parece bastante interesante, pero podrías llegar a mejorarla un poco. Te cuento:

Podrías haber utilizado un interface y programar una clase que lo implemente para cada uno de los algoritmos de mutación. Lo mismo para las selecciones y para todo lo demás y meter en tu clase AGenetico parámetros para pasarle esas clases. De esta forma ahorras algo de tiempo y de código. Espero que se me haya entendido correctamente.

En cuanto a lo de la lentitud... ya nos dirás cómo se llama tu profesor, o donde estudias, para no aparecer jamás por ahí, aunque ten en cuenta que tu profesor no tiene por qué saber Java. Yo estudié la asignatura programando en C++.

Los algoritmos genéticos son un trabajo pesado. Cuando ejecutas un programa con Swing, la JVM crea una hebra digamos... específica para el GUI. Si ejecutas cualquier trabajo sobre esa hebra, como es el caso, no sólo irá más lento, sino que, además, dejarás 'colgado' tu interfaz gráfico. Echa un vistazo en internet y en este foro a la clase SwingWorker. En las últimas versiones de JDK viene incluído, pero se pueden descargar las clases como paquete a parte para las versiones por debajo de la 1.5 (no recuerdo si la 1.4 la llevaba de serie).
Usando eso, seguramente te tirará más rápido.

De los resultados, no hay mucho que decir... la ejecución es la misma, aunque ya sabes que no todas las ejecuciones de algoritmos genéticos dan el mismo resultado ;o)  no creo que sean más que apreciaciones tuyas. De todas formas, repasa el código por si se te ha colado algún error al capturar las opciones desde el GUI y el programa no está haciendo lo que tú realmente quieres que haga.



Ya nos contarás.
Buena suerte.



Silverfox

25
C# / Api De C# .net Para Consultas Offline?
« en: Lunes 5 de Mayo de 2008, 23:34 »
Hola chavales.

Estoy tratando de aprender C# a partir de mi conociemiento en Java para hacer mis pinitos en programación de PDAs. El problema es que en el ordenador en el que me encuentro habitualmente no tengo internet, por lo que no puedo consultar el msdn que es donde miro habitualmente el nombre de las clases y los métodos que utilizo, así que necesito descargarme algo del estilo de la información que hay en esta página para consultarlo offline.

He encontrado un par de links a una 'supuesta' api de .NET Compact Framework en formato chm, pero me descarga un fichero que no contiene absolutamente nada cuando lo abro.


Me gustaría que me indicáseis un enlace desde el que pueda descargarme esta documentación. Lo que ocupe realmente me da igual y también me da igual el formato, siempre que contenga, bien el API del CF o bien API de la versión completa.

Muchas gracias a todos por vuestro tiempo.
Un saludo.



Silverfox

Páginas: [1] 2 3 ... 12