elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


  Mostrar Mensajes
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 70
171  Programación / Java / Re: array bidimensiona con numeros aleatorios sin repetir en: 9 Abril 2015, 13:49 pm
Ya veo, algo como el algoritmo Bucket Sort. Sip, en arrays grandes puede llegar a ser más eficiente, aunque en la VM actual no lo creo. Por ejemplo, for y while tardan 234 milisegundos en recorrer un array de 15 millones, osea .234 segundos, Iterator 340. Puedes ver el benchmark aquí.

Como puedes observar, es poquísimo tiempo para tan exorbitante muestra.


Saludos.
172  Seguridad Informática / Seguridad / Re: Whatsapp vulnerabilidad. en: 9 Abril 2015, 03:30 am
@beholdthe, está bien trollear de vez en cuando, pero tampoco abuses. Es evidente que el OP conoce poco sobre éstos temas, no hay por qué ser sarcástico, quizás lo hagas en broma, pero se puede ofender  ;)

Un saludo.
173  Programación / Java / Re: array bidimensiona con numeros aleatorios sin repetir en: 9 Abril 2015, 03:24 am
No te preocupes, no pasa nada ^^. Un saludo y dale duro a la carrera.
174  Programación / Programación General / Re: Que puedo hacer (lenguaje de programacion) en: 9 Abril 2015, 03:22 am
Java (Green project) nació con la finalidad de programar electrodomésticos, pero en 1994, con el boom de la WEB, se creó HotJava, que era una especie plataforma para correr aplicaciones en la WEB. De hecho, en 1995 se anuncia que Java iba a ser incluido en el navegador líder de la época, Netscape.

Java en realidad nació para la WEB, lo que pasa es que todos piensan que Java se resume a Swing y los monstruosos Applets. Java provee una API brutal para el desarrollo web, aquí unas cuantas cosas:

  • Frameworks MVC: JSF (Java Server Faces), SpringMVC y el futuro MVC 1.0
  • JAX-WS | JAX-RS: API para SOAP y REST WebServices.
  • JAXB: API para el manejo de archivos XML. Conversión entre un POJO a XML y viceversa.
  • JAAS: API para el manejo de seguridad y acceso.
  • WebSockets: API para WebSockets e integración con HTML5.
  • EJB: Enterprise JavaBeans. Pueden usarse de forma remota (entre VM).
  • JSON: API para manejo de JSON (aunque creo será removida).
  • JPA: API para la persistencia de datos a través de ORM. El servidor de aplicaciones maneja las transacciones.
  • etc.

Java, aunque no muchos lo crean, es usado principalmente para desarrollo web y a nivel empresarial. Su extensa API, librerías y frameworks nos permiten crear aplicaciones muy robustas y eficientes. Puedes ver éste REST que hice en Java con JPA y JAXB muy sencillo.

La razón por la que no muchos usan Java para desarrollo web es porque tiene una curva de aprendizaje algo alta, antes de entrar al API EE, tienes que dominar el API SE, de lo contrario, te perderás. Así que, mi consejo es que estudies Java, el API estándar (SE) y luego saltes al API EE, que es muy amplio. Para empezar en Java EE, aprende sobre:

  • Servidores de aplicaciones
  • JSP's y JSTL
  • javascript
  • Servlets
  • Cookies y Sesiones.

Saludos.
175  Seguridad Informática / Seguridad / Re: Whatsapp vulnerabilidad. en: 9 Abril 2015, 02:54 am
No veo porqué no sea posible. Los backups de las conversaciones de Whatsapp están a la vista. Se puede acceder a ellas, lo difícil sería desencriptarlas. En teoría, si no me equivoco, podría programarse una app que corra en background y programarlo para cada cierta hora enviar los backups de Whatsapp al email del atacante (quizás con SMTP para evitar pedir intervención de la víctima). Una vez en su poder, solo tendría que dedicarse a desencriptarlas. Lo jodido sería instalarla, ya que es imposible instalar algo sin la intervención del usuario. Aquí vendría a tomar importancia la ing. social para engañar a la víctima haciéndole creer que la app es benévola.

Quizás me anime a intentarlo algún día xD. Un saludo.
176  Programación / Java / Re: Contar objetos creados de una clase en: 9 Abril 2015, 02:22 am
Hola leur0985, bienvenido al foro. Si bien agradecer es bueno, no lo es para el foro revivir temas viejos sin una buena causa. No ayuda a mantener el orden en el foro. Tenlo en cuenta la próxima vez compañero.


Un saludo.
177  Programación / Java / Re: array bidimensiona con numeros aleatorios sin repetir en: 9 Abril 2015, 02:20 am
Hola DarK_FirefoX,

Sip, es exactamente eso. Es lo mismo que hacer:

Código
  1. for(int row=0; row<numbers.length; row++) {
  2.    for(int col=0; col<numbers[row].length; col++) {
  3.        if(numbers[row][col] == number)
  4.            isRepeated = true;
  5.    }
  6. }

Incluso se puede otpimizar un poco, para que rompa el loop principal al detectar un número repetido:

Código
  1. private Boolean isRepeated(final Integer number) {
  2.    Boolean isRepeated = false;
  3.    mainloop:
  4.    for(Integer[] row : numbers) {
  5.        for(Integer col : row) {
  6.            if(col == number) {
  7.                isRepeated = true;
  8.                break mainloop;
  9.            }
  10.        }
  11.    }
  12.    return isRepeated;
  13. }


Un saludo.
178  Programación / Java / Re: array bidimensiona con numeros aleatorios sin repetir en: 9 Abril 2015, 00:59 am
1) Por favor, antes de publicar algo, léanse un toque las reglas. Si vas a colocar código Java, utiliza las etiquetas GeSHi.

Primero, tu código está mal. La forma de llenar una matríz es la siguiente:

Código
  1. for(int row=0; row<numbers.length; row++) {
  2.    for(int col=0; col<numbers[row].length; col++) {
  3.        numbers[row][col] = generateRandomNumber();
  4.    }
  5. }

El método generateRandomNumber() que usaremos para generar los números de las cartillas es un método recursivo:

Código
  1. private Integer generateRandomNumber() {
  2.    Integer number = 1 + RANDOM_GEN.nextInt(90);
  3.    if(isRepeated(number)) {
  4.        number = generateRandomNumber();
  5.    }
  6.    return number;
  7. }

Que llama al método isRepeated que evalúa si un número ya existe dentro de la matríz:

Código
  1. private Boolean isRepeated(final Integer number) {
  2.    Boolean isRepeated = false;
  3.    for(Integer[] row : numbers) {
  4.        for(Integer col : row) {
  5.            if(col == number)
  6.                isRepeated = true;
  7.         }
  8.     }
  9.     return isRepeated;
  10. }

Luego, puedes obtener la cartilla:

Código
  1. public Integer[][] getCard() throws IllegalAccessException {
  2.    if(numbers[0][0] == null) {
  3.        throw new IllegalAccessException("Primero llene la cartilla");
  4.    }
  5.    return numbers;
  6. }

Y, el método main sería así:

Código
  1. public static void main(String[] args) {
  2.    Bingo bingo = new Bingo().generateNumbers();
  3.    try {
  4.        for(Integer[] row : bingo.getCard()) {
  5.            for(Integer col : row) {
  6.                System.out.println(col);
  7.             }
  8.         }
  9.     } catch(IllegalAccessException e) {
  10.         javax.swing.JOptionPane.showMessageDialog(null,e.getMessage());
  11.     }
  12. }

Nota que en el método getCard() lanzamos una IllegalAccessException si tratamos de obtener la cartilla y ésta está vacía. Ésta excepción la capturamos en el método main y mostramos el mensaje en un JOptionPane.

El código, quedaría así:

Código
  1. import java.util.Random;
  2.  
  3. public class Bingo {
  4.    private Integer[][] numbers = new Integer[9][3];
  5.    private final Random RANDOM_GEN = new Random(System.nanoTime());
  6.  
  7.    public Integer[][] getCard() throws IllegalAccessException {
  8.        if(numbers[0][0] == null) {
  9.            throw new IllegalAccessException("Primero llene la cartilla");
  10.        }
  11.        return numbers;
  12.    }
  13.    public Bingo generateNumbers() {
  14.        for(int row=0; row<numbers.length; row++) {
  15.            for(int col=0; col<numbers[row].length; col++) {
  16.                numbers[row][col] = generateRandomNumber();
  17.            }
  18.        }
  19.        return this;
  20.    }
  21.    private Integer generateRandomNumber() {
  22.        Integer number = 1 + RANDOM_GEN.nextInt(90);
  23.        if(isRepeated(number)) {
  24.            number = generateRandomNumber();
  25.        }
  26.        return number;
  27.    }
  28.    private Boolean isRepeated(final Integer number) {
  29.        Boolean isRepeated = false;
  30.        for(Integer[] row : numbers) {
  31.            for(Integer col : row) {
  32.                if(col == number)
  33.                    isRepeated = true;
  34.            }
  35.        }
  36.        return isRepeated;
  37.    }
  38.    public static void main(String[] args) {
  39.        Bingo bingo = new Bingo().generateNumbers();
  40.        try {
  41.            for(Integer[] row : bingo.getCard()) {
  42.                for(Integer col : row) {
  43.                    System.out.println(col);
  44.                }
  45.            }
  46.        } catch(IllegalAccessException e) {
  47.            javax.swing.JOptionPane.showMessageDialog(null,e.getMessage());
  48.        }
  49.    }
  50. }


Saludos.
179  Foros Generales / Noticias / Re: Demandan a Facebook por su gigantesca base datos con biometría facial en: 9 Abril 2015, 00:10 am
@drvy, si es como dices, que FB en sus terminos y condiciones dice que pueden vender tu información al mejor postor e incluso tener un mapa biométrico de tu rostro, entonces todas las denuncias que le vienen haciendo son totalmente infundadas.

Saludos.
180  Programación / Java / Re: Duda con arraylist en: 9 Abril 2015, 00:06 am
Jaja suele pasar xD. No te preocupes colega, no pasa nada.


Un saludo.
Páginas: 1 ... 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [18] 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ... 70
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines