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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 [2]
11  Programación / Java / Re: Ejemplo real sobre thread en: 13 Diciembre 2016, 21:22 pm
Si puedes llamarlo en cualquier momento.
Para otras herramientas que no usen UI sirve de igual manera.
Como ejemplo un poco cutre, imaginate que tienes una aplicacion que imprime por consola 2 operaciones matematicas, la primera tiene un tiempo de 20 segundos, la segunda de 30.
Si no usas hilo, la aplicacion tardara 50 segundos en haber mostrado el resultado de ambas operaciones.
Si colocas una de ellas en un hilo, y otra sin el, o incluso ambas en un hilo, ambas operaciones empezaran a realizarse a la vez por lo que tras 20 segundos te imprimira el primer resultado y 10 segundos mas tarde, o sea 30 segundos desde el inicio de esas operaciones te retornara el segundo resultado, habras ahorrado 20 segundos de ejecucion.
A grandes rasgos podrias aplicarlo para cosas asi.
12  Programación / Java / Re: Ejemplo real sobre thread en: 13 Diciembre 2016, 19:25 pm
Entendiendo para que sirven puedes implementar una aplicacion real.
Sin mucho tecnicismo un thread sirve para ejecutar varios procesos a la vez reduciendo el tiempo de la ejecucion total, o cargar en ellos codigos de largo trabajo sin bloquear la UI del programa.

Por ejemplo, tienes un programa que ejecute una funcion pesada que tarda 20 segundos en realizarse y otra de 15 segundos. El total de ejecucion sin hilos es de 20 + 15 segundos y hasta que este no termine, la interfaz estara "congelada" (dando la impresion de que el programa deja de funcionar de cara al usuario final), ademas de que hasta que no termine dicha funcion, no podras realizar nada mas.

Para arreglar esto, se usan hilos, puedes probarlo tu mismo haciendo este sencillo ejemplo.

Código
  1. for(int i = 0; i <= 9999999; i++)
  2. {
  3.    System.out.print("Numero " + i);
  4. }
  5.  

Si ejecutas ese codigo, hasta que no terminase el bucle no podrias seguir usando la aplicacion, se quedara ejecutandolo hasta que termine.
Ahora si lo ejecutas en un hilo:

Código
  1. Thread thread = new Thread(){
  2.    public void run(){
  3.      for(int i = 0; i <= 9999999; i++)
  4.      {
  5.          System.out.print("Numero " + i);
  6.      }
  7.    }
  8.  }
  9.  
  10.  thread.start();
  11.  

De esa manera veras que sigue ejecutando el codigo del bucle sin congelar la UI permitiendo por ende, que puedas realizar mas tareas simultaneamente.
13  Foros Generales / Dudas Generales / Re: Intento de boot desde USB en: 13 Diciembre 2016, 16:10 pm
No deberias seleccionar, unicamente cambiar el orden de arranque, en la parte inferior salen las teclas para subir y bajar el que este seleccionado, si no me equivoco coloca en primer lugar USB-ZIP (Disco comprimido / cerrado) es decir el usb.
Luego aplicas los cambios con la opcion save & exit.
14  Programación / PHP / Re: Ordenar archivos de directorio en: 12 Diciembre 2016, 02:05 am
Almacena los elementos en un array dentro del bucle para despues aplicar sort, por ultimo listalos con un simple foreach:

Código
  1. <?php
  2. $directory="../../web/images/fotos/slideshows/$carpeta/" ;
  3. $dirint = dir($directory);
  4. while (($archivo = $dirint->read()) !== false)
  5. {
  6.   if ( preg_match("/(\.jpg)$/i", $archivo)){
  7.      $lista[] = $archivo;
  8.    }
  9. }
  10. $dirint->close();
  11.  
  12. sort($lista);
  13. foreach($lista as $archivo) {
  14. echo $archivo;
  15. }
  16.  
  17. ?>
15  Seguridad Informática / Criptografía / Duda encriptacion en imagen .png en: 7 Diciembre 2016, 22:55 pm
Saludos a tod@s.
Tras ya varias semanas intentando dar con la solucion y no conseguirlo, vengo a pedir alguna opinion a ver si a alguien se le ocurre que metodo de encriptacion usan en la imagen que pongo a continuacion.
Adjunto 2 archivos subidos a mega, uno es la imagen original, la otra es el archivo despues del cifrado.

Original:
https://mega.nz/#!aQYkgQ6b!AiNqfO1qcfSp7kBYuU2MSv7MWfGHod6OF0eU3NZeWp0
Cifrada:
https://mega.nz/#!aI53VLbL!CBPgzaSZQop3pzHDA3czju78mRabCy5YgkyBg-24_AE

El programa en cuestion (un juego), hace uso de la libreria libpng.dll y por ende zlib.
Asi que tal vez el resultado del cifrado pueda dar como resultado un archivo empaquetado con zlib en vez de png, y el png una vez desempacado variar un poco por posibles cambios que haga el libpng.

Como otro dato, las imagenes tienen todas una "cabecera" que es la misma, el resto del hexadecimal se ve distinto:
Parte igual HEX:

Código
  1. 63 63 2D 36 34 37 33 38 AF DC C5 F8 6C 5E 88 DF EB 0C E4 85 64 DD EC 77 1C 5E ED 65 02 0D 6D 71 40 AE 64 FA 2E 4E 09 34 10 1B CF 54 8A C9 E0 D5 4A AE 31

Eternamente agradecido a cualquier comentario que pueda orientarme. Gracias de antemano.
pd: Si es necesario coloco el hexadecimal completo para ahorrar descargar archivos.
16  Programación / Java / Re: getPromedioColumnas(), algun tip ? en: 7 Diciembre 2016, 19:25 pm
Te dejo lo que creo es la solucion si no entendi mal lo que quieres hacer, lo he ajustado para que sirva en array "regular" e "irregular".

Código
  1. import java.text.DecimalFormat;
  2.  
  3. /*
  4.  * @Array 2D como promediar cada columna ?
  5.  */
  6. public class Array2Dimensiones implements Mostrar {
  7.  
  8. private int array[][];
  9. private int array2[][];
  10. private DecimalFormat dosDigi = new DecimalFormat("0.00");
  11.  
  12. public Array2Dimensiones( String descripcion, int array[][], int array2[][] ) {
  13. print("\""+descripcion+"\"\n");
  14. this.array = array;
  15. this.array2 = array2;
  16. mostrarArray();
  17. }
  18.  
  19. public void mostrarArray() {
  20. print("Array 2D completo\n");
  21. for( int tmp[] : array) {
  22. for( int tmp2 : tmp ) {
  23. print("{"+tmp2+"}");
  24. }
  25. print("\n");
  26. }
  27.  
  28. /*
  29. * PROMEDIO DE CADA FILA
  30. */
  31. print("Promedio de cada fila \n");
  32. for( int f=0; f<array.length; f++ ) {
  33.    double promedio = 0;
  34.    int c;
  35. for( c=0; c<array[f].length; c++ ) {
  36. print(""+array[f][c]);
  37. promedio += array[f][c];
  38. }
  39. print("\t\t\t\t"+dosDigi.format(promedio / c)+"\n");
  40. }
  41.  
  42. /*
  43. * PROMEDIO DE CADA COLUMNA
  44. */
  45.  
  46. //obtenemos la longitud mas alta de las columnas para repetir el bucle for
  47. int cantidad = 0;
  48. int temp = 0;
  49. int x, y;
  50.        int[] segundo;
  51.        for (x = 0; x < array.length; ++x) {
  52.          segundo = array[x];
  53.          for (y = 0; y < segundo.length; ++y) {
  54.              temp++;
  55.          }
  56.          if(cantidad <= temp)
  57.          {
  58.              cantidad = temp;
  59.              temp = 0;
  60.          }
  61.        }
  62.  
  63. print("Promedio de cada columna \n");
  64.  
  65. for( int f=0; f<cantidad; f++ ) {
  66. double promedio = 0;
  67. int count = 0;
  68. int c;
  69. for( c=0; c < array.length; c++ ) {
  70.    //se filtran las posiciones del array con valor nulo
  71.    if(array[c].length > f)
  72.    {
  73.     print(""+array[c][f]);
  74.     promedio += array[c][f];
  75.     count++;
  76.    }
  77. }
  78. print("\t\t\t\t"+dosDigi.format(promedio / count)+"\n");
  79. }
  80.  
  81. }
  82.  
  83.  
  84. @Override
  85. public void print( String s ) { System.out.print(s); }
  86. public static void main( String []blablabl) {
  87.  
  88. int array[][] = {{1,2,3},
  89.                {4,5,6},
  90.                        {7,8,9}};
  91.  
  92. int array2[][] = {{1,2,3},
  93.         {4},
  94. {5,6,7}};
  95.  
  96. new Array2Dimensiones("2 tipos de Array 2d e Irregular",array,array2);
  97.  
  98. }
  99. }
Páginas: 1 [2]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines