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

#11
Java / Re: Depurar
15 Abril 2011, 15:02 PM
Básicamente sirve para ver cómo se comporta el programa en un punto dado del código, poder ver en qué está fallando o por qué no hace lo que esperas que haga y poder resolverlo sin tener que hacerlo "a pelo" viendo el código. La verdad es que yo al principio tampoco lo entendía mucho, pero vas a ver que al final resulta una herramienta bastante útil  ;)

Saludos!
#12
Java / Re: Dificultades en Java
15 Abril 2011, 14:52 PM
Siento si no te respondí antes, es que he estado con exámenes y no he tenido tiempo ni para respirar xD Vi también que abriste otro post buscando alguien que te ayude sin mucha suerte, supongo que te urgirá hacer esto, así que intentaré ayudarte xD

Bueno, para empezar, yo personalmente definiría Columna como una clase a parte e implementaría una LinkedList de columnas, dentro de las que habrá o no una publicación.

Te dejo un ejemplo muy básico de como usar un HashMap aplicado a esto, que posiblemente te sirva para resolver tu problema.

Código (java) [Seleccionar]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.LinkedList;

public class HashEjemplo {

public static void main(String[] args) throws IOException {

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

// Se definen dos personas de prueba
Persona juanito = new Persona("Juanito", "Tokio");
Persona pepito = new Persona("Pepito", "Nueva York");

// Creas el HashMap, las keys seran sus nombres y los values sus
// columnas
HashMap hm = new HashMap();
hm.put(juanito.getNombre(), juanito.getColumnas());
hm.put(pepito.getNombre(), pepito.getColumnas());

LinkedList columnas = null;

System.out.println("Nombre del trabajador: ");
String name = br.readLine();

// Si el HashMap contiene un value con dicha key, lo devuelve
if (hm.containsKey(name))
columnas = (LinkedList) hm.get(name);

}

}


Para implementarlo a tu aplicación, cada vez que creas un trabajador lo metes en el HashMap con su nombre como key y sus columnas como value, y luego para imprimir sus columnas recorres la LinkedList e imprimes, si es que tiene, su publicación.

Espero que te sirva, saludos!
#13
Vale, esto ya va evolucionando  ;D

Para empezar, cuando el usuario mete la frase por teclado, podrías hacer un split(" ") para que te devuelva un array con las palabras separadas y así trabajar más fácilmente con cada una. Lo que no entiendo muy bien es la forma de ordenación de las palabras, porque si se las ordena por frecuencia (de las que menos se repiten las letras a las que más se repiten por ejemplo) luego no se podría recuperar la frase en el orden normal, aunque quizás esto no interesa para el caso.

Bueno, lo siguiente sería definir el nodo interno. Por lo pronto va a tener dos vectores, uno de Character con todos los caracteres del alfabeto y otro de Integer, con las frecuencias del 0 al 9 y además una referencia al siguiente nodo interno. En realidad, lo de los vectores no lo veo necesario, y no sólo eso, si no que va a consumir una cantidad absurda de memoria... porque si por cada nodo interno (cada letra no repetida de cada palabra) se van a crear 36 objetos.... echa cuentas  :xD No se, creo que sigo sin entender del todo el enunciado, pero bueno, prosigamos.... tarde o temprano sacaremos una solución decente, y si opina alguien más mejor, que cuantas más cabezas pensando más fácil jaja  ;D
Como decía, el nodo interno tendrá estos dos vectores y de alguna forma tendrás que definirle la letra y la frecuencia en especial que almacena, así que tendrán que haber 2 variables más, una que apunte a la letra y otra que apunte a la frecuencia (por eso decía que no veía necesario lo de los vectores), a no ser que definas los vectores en el nodo externo o en el árbol y al momento de crear el nodo les pases una referencia por parámetros y así te ahorras de crear 20mil vectores, eso ya como veas. También le pasaría como argumento la palabra, pero de la siguiente forma:

Supongamos que estás en el nodo externo, que va a guardar la palabra, una referencia a la siguiente palabra y una referencia al primer nodo interno; dentro de éste creas el nodo interno y le pasas la palabra. ¿Qué va a hacer el nodo interno? Recibe la palabra, mira la primer letra y cuántas veces se repite (ya tenemos el caracter y la frecuencia), luego crea una nueva palabra sin dicho caracter (con split("caracter") y uniendo el array en un nuevo String por ejemplo), crea un nuevo nodo interno y le pasa la palabra, y así sucesivamente hasta que la palabra esté vacía. De esta forma también te ahorras de tener que calcular las frecuencias a parte y le dejas todo el trabajo a los nodos  :D

Luego para ordenar los nodos externos yo sumaría las frecuencias de los internos y lo guardaría en un atributo que represente la "frecuencia absoluta" y ya después jugando con compareTo(), getNext() y setNext() ordenas la lista enlazada.

Esto sigue estando muy verde, pero de a poquito yo creo que estamos llegando a algo, a ver si entre los dos nos vamos dando ideas y llegamos a algo  :xD

Por cierto, cuidado con las mayúsculas y las minúsculas!

Saludos!
#14
Ok, gracias por aclarármelo, es que había leído en varios posts del foro que esos métodos ya no funcionaban, o al menos no en la mayoría de los casos, y como a mi tampoco me habían funcionado pensé que así era... pero bueno, ya modifiqué el post  ;D

Saludos!
#15
Java / Re: Dificultades en Java
12 Abril 2011, 01:15 AM
Supongo que tendrás una clase Columna y una clase Publicacion, si es así, podrías hacer que uno de los atributos del trabajador sea un objeto de la clase Columna (su columna específica) y que uno de los atributos de Publicacion sea el trabajador que la ha escrito, de esta forma la vinculas con ese trabajador en concreto. Entonces, cuando busques a un trabajador por su nombre, miras su columna y si tiene alguna publicación la muestra. La idea es jugar con los atributos para poder decir "esta publicación pertenece a tal trabajador, a tal columna, o esta columna pertenece a tal trabajador, o el trabajador tiene tales publicaciones, y así poder relacionarlos fácilmente.

Espero que te haya servido de algo aunque estemos hablando del problema a muy grandes rasgos y sin meternos en código. Si ves que no va por ahí la cosa o que habría que tener en cuenta algo sobre la implementación o algún fragmento de código para ayudarte mejor a resolver el problema, bienvenido sea  :xD

Saludos!
#16
Bueno, para empezar, yo creo que lo más difícil es entender el enunciado  :xD

Si no he entendido mal, cada nodo del árbol almacena una palabra, una cadena de caracteres, una ristra de caracteres, como le quieras llamar. Entonces, "detrás" de ese árbol, hay unos nodos auxiliares que contienen el caracter y a un vector con 10 enlaces, y con los que se va a ver cuántas veces se repite cada letra.

El tema es que no sé qué es un TAD ni un arbol jd (he googleado y nada), que entendiendo esos conceptos podría darte una ayuda más certera, por lo menos el árbol, que no me cierra que sus nodos almacenen las palabras y al final te diga que las palabras están en una lista enlazada simple.

En resumen, el enunciado es muy poco claro yo creo, no sé dónde estarás estudiando Java pero espero que no todos los enunciados sean así, o que al menos te lo expliquen bien en teoría para poder después entender este trabalenguas, y ya ni hablar de tutorías o clases donde puedas resolver tus dudas...

En fin, si mi interpretación del enunciado es correcta (y a la espera de que me comentes lo del TAD y el árbol jd para corregirme) yo lo implementaría de la siguiente manera:

Haría dos listas enlazadas, una con los nodos de las palabras a almacenar (nodos A a partir de ahora) y otra con los nodos internos (nodos B) que son cada una de las letras del alfabeto con sus respectivos vectores de frecuencias (de enteros por ejemplo). Dentro de los nodos A almacenaría el String con la palabra y también pondría un vector de nodos B, donde cada posición (correspondiéndose con cada letra distinta de la palabra) apuntaría a la posición correspondiente del vector del nodo B que almacena dicho caracter.  Luego ya depende de cómo sea el árbol jd, esto lo metes de una forma u otra, pero a grandes rasgos yo creo que sería algo así (a no ser que los conceptos de TAD y árbol jd le den la vuelta al problema XD). Y la implementación una vez que se tiene en mente la estructura es muy fácil, así que eso ya te lo dejo a vos, que si estás yendo a clase la idea es que aprendas :D

Cualquier cosa preguntas, saludos!

EDIT: Si pones los códigos entre [ code=java ] código [ /code ] (sin los espacios) se ven mucho mejor  ;)
#17
Cita de: XXX-ZERO-XXX
Es netstat -n , vs pusiste netstat -tn

Si, es verdad, es que suelo usar Linux y se me mezclaron los comandos. La t en un principio la puse para que sólo muestre las conexiones por tcp, que en Windows puede hacerse con -p TCP.

Cita de: XXX-ZERO-XXX
Y se puede hacer cuando haces una transferencia tamb si, solo q tiene q ser pesado el archivo para q te de tiempo de mirar.

No te lo niego, pero yo creo que es mucho más viable pasar una imagen chorra en plan "mira esto!!! que risa!!!" o como sea, que un archivo pesado  :xD

Cita de: XXX-ZERO-XXX
Pero para todo esto existe el plugin para msn plus q es el IpGet y anda bien si lo sabes usar.

Será que no lo se usar entonces. Pero aun así, prefiero esto y no andar buscando el script, bajarlo, instalarlo y aprender a usarlo, que es igual de funcional (y ya que estás aprendes un poco a usar netstat). Aunque bueno, supongo que la ventaja del ipget será que no hay necesidad de transferir ningún archivo ni nada, no?

Saludos.

#18
Cita de: ovichan en 30 Marzo 2011, 18:24 PM
No se si esta el tema ya medio cerrado pero mi duda, surge a si yo quiero contar todas las instancias creadas de todas las clases de mi proyecto. Supongo que deberia utilizar de igual modo una variable para almacenar sus incrementos y que debiera ser una variable de clase no, la que en todos los constructores se almacene, no es asi?

Saludos

EDITO: El crear una variable de clase no serviria, puest que lo he pensado friamente y no serviria de nada. Tendria que crear metodos get en cada clase y luego recolectarlos en otro metodo....

Si quieres contar todas las instancias de las clases de tu proyecto puedes usar un atributo static en cada una y acceder a él con un getNombreAtributo() como bien dijo Didacso, o puedes definir las variables dentro del mismo proyecto, y cada vez que creas un objeto (en algún sitio se crearán tus objetos) le sumas uno a la variable correspondiente. Saludos.
#19
¿Y cómo quieres que te devuelva las veces que se repite cada caracter? ¿Por pantalla, como un array, como un vector? Y otra cosa, ¿es necesario que trabajes con vectores? Porque puede implementarse de otras formas que no sea declarando un vector con todas las letras del alfabeto. Saludos!
#20
http://www.indonesianhacker.or.id/showthread.php?8360-Install-Metasploit-di-ubuntu-10.10

Te lo bajas de la página oficial, te sitúas en la carpeta donde lo descargaste y sigues los comandos del link. Un poco de google  ;D

Antes vas a tener que instalarte ruby si no lo tienes instalado ya, y si no queda claro lo anterior, mirate este video http://youtu.be/T7t6IJK480E y fijate en la información que trae. Saludos!

EDIT: Si se te complica lo de Ruby, te vas al gestor de paquetes o al centro de software y te instalas ruby-full.